计算多项测验结果的算法

时间:2010-08-09 10:57:27

标签: algorithm language-agnostic

我正在努力研究用于计算A,B,C样式测验结果的算法的边缘情况。

测验由任意数量的问题组成,每个问题恰好有3个答案对应A,B和C.每个问题都会自动显示一个继续按钮,一旦所有问题都被回答,结果就会显示出来

有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
}

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

3 个答案:

答案 0 :(得分:3)

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

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

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

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

当您点击测验结束时,您将拥有足够的数据来构建正确的答案。

答案 1 :(得分:1)

您可以将所有活动(选择答案)存储在类似列表的数据结构中。如果选择了答案,则将其添加到列表中,否则,只需将其从列表中删除即可。在计算最后一个案例时,请从列表的后面开始查找其中一个同等加权的结果。找到的第一个是最后选择的。因为它是最后选择的,所以结果就是这样。

使用此方法,您还可以通过简单计算列表中选项的出现次数来计算所有选项(A,B和C)。

答案 2 :(得分:0)

一个想法可能是引入一个数组或3个整数,每个元素对应于A,B或C.我假设每个问题都有一个数字。每次回答问题时,都会将问题编号存储在该数组中。然后你只需要遍历数组并查看哪个元素具有最高编号,即最后给出。