获取所有可能组合的算法


Algorithm to get all Possible Combinations

我有四个插槽。每个插槽可以是0或1。如何循环以获得所有可能的组合?我该如何处理这个问题?

这是上下文:

在数据库表中,有四个字段(查看、创建、编辑、删除)。每个字段都可以是0或1。我希望保存所有可能的组合。

您可以使用4个嵌套循环来处理它:

for ($a=0; $a<=1; $a++) {
    for ($b=0; $b<=1; $b++) {
        for ($c=0; $c<=1; $c++) {
            for ($d=0; $d<=1; $d++) {
                echo "$a $b $c $d'n";
            }
        }
    }
}

这产生:

0 0 0 0
0 0 0 1
...
1 1 1 0
1 1 1 1

或者,你可以从[0,16)范围内的数字中提取二进制数字:

for ($i=0; $i<16; $i++) {
    $a = ($i & 8) ? 1 : 0;
    $b = ($i & 4) ? 1 : 0;
    $c = ($i & 2) ? 1 : 0;
    $d = ($i & 1) ? 1 : 0;
    echo "$a $b $c $d'n";
}