多项选择题计算结果的算法

标签 algorithm language-agnostic

我正在努力处理用于计算 A、B、C 类测验结果的算法的边缘情况。

测验由任意数量的问题组成,每个问题都有对应于 A、B 和 C 的 3 个答案。每个问题都单独显示,并带有一个继续按钮,一旦回答完所有问题,就会显示结果.

有3种可能的结果,分别对应A、B、C。

显示的结果应该是选择最多的答案。

如果两个答案被平均选择,结果应该是最后选择了那些答案中的一个。

这是我苦苦挣扎的最后一部分,计算这个的最佳方法是什么?我需要在测验期间存储什么才能做到这一点?

我的初步计算是:

if (countA > countB && countA > countC)
{
    result = "A";
}
else if (countB > countA && countB > countC)
{
    result = "B";
}
else if (countC > countA && countC > countB)
{
    result = "C";
}
else
{
    // two results are equal
}

计算最后一个案例的最佳方法是什么?

最佳答案

您提出的问题似乎没有考虑答案是否正确。无论哪种方式,您都可以保留 7 个计数器:

  • 答案数量,A(或正确答案 A)
  • 答案数,B
  • 答案数,C
  • 当前问题索引(用于接下来的三个计数器)
  • 最后一个答案的索引,A(或最后一个正确的 A 答案)
  • 最后一个答案的索引,B
  • 最后一个答案的索引,C

对于每个问题,您都会增加“当前问题索引”。如果您关心答案是否正确,请仅在正确时执行以下步骤。如果您不在乎,请始终执行以下步骤。

如果给出答案 A,则增加“答案数 A”计数器,并设置“最后一个答案索引 A”的值。

当您完成测验时,您将有大量数据来构建正确的答案。

关于多项选择题计算结果的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3439321/

相关文章:

language-agnostic - 接口(interface)的概念从何而来?

algorithm - 瓦片的成对匹配

algorithm - 设计一个对序列进行排序的算法 O(nloglogn)

algorithm - 为什么 Floyd 的循环查找算法对于某些指针增量速度会失败?

algorithm - 是否有一种算法可以在 O(nlogn) 中找到安排 n 个类(class)的最少教室数?

c# - 值类型和原始类型有什么区别?

unit-testing - 单独的类与方法

language-agnostic - 将图形数据表示为键值对象

python - 双循环的迭代计数器

algorithm - 统计优化遗传算法选择算子