如果三个布尔值中至少有两个为true,那么以下是最简单的方法来判断:
BOOL a, b, c;
-(BOOL)checkAtLeastTwo
{
return a && (b || c) || (b && c);
}
如果有十个布尔值且至少两个需要为真,那么最佳解决方案将是什么?提前致谢。
如果三个布尔值中至少有两个为true,那么以下是最简单的方法来判断:
BOOL a, b, c;
-(BOOL)checkAtLeastTwo
{
return a && (b || c) || (b && c);
}
您原来的实现不够优化-您可以直接对真值求和:
return (int)a + (int)b + (int)c >= 2;
return (int)a + (int)b + (int)c + (int)d + (int)e +
(int)f + (int)g + (int)h + (int)i + (int)j >= 2;
return a + b + .... + n >= 2;