布尔变量的所有可能组合

wac*_*ock 2 c# algorithm boolean

我正在尝试找到一个允许我执行以下操作的算法:想象一下,我有10个布尔变量,我想尝试每个组合,因为我的目标是找到任何组合,这将给我的一个结果方法是真的(这个方法有很多限制,这就是为什么我想测试每个可能的组合,如果没有组合可以解决问题,那么我想通知用户这个).我希望这是可以理解的!

dtb*_*dtb 7

试试这个:

for (int i = 0; i < (1 << 10); i++)
{
    bool b1 = (i & (1 << 0)) != 0;
    bool b2 = (i & (1 << 1)) != 0;
    bool b3 = (i & (1 << 2)) != 0;
    bool b4 = (i & (1 << 3)) != 0;
    ...

    if (MyMethod(b1, b2, b3, b4, ...))
    {
        // Found a combination for which MyMethod returns true
    }
}
Run Code Online (Sandbox Code Playgroud)

当然,您也可以使用LINQ:

var result = from b1 in new[] { false, true }
             from b2 in new[] { false, true }
             from b3 in new[] { false, true }
             from b4 in new[] { false, true }
             ...
             where MyMethod(b1, b2, b3, b4, ...)
             select new { b1, b2, b3, b4, ... };
Run Code Online (Sandbox Code Playgroud)