最好的方法是选择三者中的大多数

时间:2011-07-07 18:04:56

标签: java algorithm implementation

编辑:从解释,答案和示例中可以理解:

我有三个变量,每个变量只能假设两个特定值。例如,此值可以是0或1。

我想要一个逻辑,其中输出将是三个变量中大多数存在的值。

例如:

  

如果x=0y=0z=1,则输出为0。

     

如果x=1y=0z=1,则输出为1。

@Femaref的答案在可能的值为0和1时给出了一个好的结果,但我需要一个通用的解决方案,它可以处理变量的任何可能的值。

3 个答案:

答案 0 :(得分:14)

if((x+y+z) >= 2)
  return 1;
return 0;

答案 1 :(得分:3)

if x==y then return x else return z

这不取决于可能的值为0和1。

答案 2 :(得分:1)

我会使用表格查找。将您的三位输入转换为数字,并使用它来索引到一个数组,该数组为每个可能的输入保存正确的结果。

您可以使用简单的数学,并检查总和> = 2,但很难猜测这是否是个好主意。它符合手头的要求,但如果可能需要的话,它不容易修改。

编辑:表格驱动的方法看起来像(语法可能有点偏离 - 我最近主要完成了C ++):

int outputs[] = { 0, 0, 0, 1, 0, 1, 1, 1};

return outputs[a<<2 | b << 1 | c];