what is the fastest algorithm for permutations of three condition?Fastest way to find correct combination with set of 8 booleans相似



我有三个boolean值(分别称为abc),每个值根据正确的值具有不同的操作。这里有一种奇怪的情况。如果a为false,则c也必须为false。有六种可能性,这会导致较长且难看的if语句链。这是我想出的:

if (a)
    {
        if (b)
        {
            if (c)
            {
                doAction1(); // a = true, b = true, c = true
            }
            else
            {
                doAction2(); // a = true, b = true, c = false
            }
        }
        else
        {
            if (c)
            {
                doAction3(); // a = true, b = false, c = true
            }
            else
            {
                doAction4(); // a = true, b = false, c = false
            }
        }
    }
    else
    {
        if (b)
        {
            doAction5(); // a = false, b = true, c = false
        }
        else
        {
            doAction6(); // a = true, b = false, c = false
        }
    }


我希望代码可读性和速度快,这意味着我希望不要使用任何奇怪的按位运算。这不是家庭作业,只是个人项目一部分的简化版。

最佳答案

你总是可以写

if (a && b && c)
{
    action1 ();
}
else if (a && b && ! c)
{
    action2 ();
}
else if (a && ! b && c)
{
    action3 ();
}
else if (a && ! b && ! c)
...


可以说,嵌套级别更少,而括号只是噪声,这使其更具可读性。而且您不再需要评论。

07-25 23:38