如果三个 bool 值中至少有两个为真,这是最简单的找出方法:
BOOL a, b, c;
-(BOOL)checkAtLeastTwo
{
return a && (b || c) || (b && c);
}
如果有十个 bool 值并且其中至少两个需要为真,最佳解决方案是什么?提前致谢。
最佳答案
您的原始实现是次优的 - 您可以只对真实值求和:
return (int)a + (int)b + (int)c >= 2;
显然您可以将其扩展到 10 个变量:
return (int)a + (int)b + (int)c + (int)d + (int)e +
(int)f + (int)g + (int)h + (int)i + (int)j >= 2;
关于language-agnostic - 检查十个 bool 值中至少有两个为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272139/