-5
我有四個插槽。每個插槽可以是0或1.我如何讓循環獲得所有可能的組合?我怎麼解決這個問題?算法得到所有可能的組合
這裏的背景:
在數據庫表中,有四個字段(查看,創建,編輯,刪除)。每個字段可以是0或1.我希望保存所有可能的組合。
我有四個插槽。每個插槽可以是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";
}
答案是16,因爲它是2^4。或者你的意思是讓它顯示每個組合? – asimes 2014-08-31 16:39:33
以二進制從0到15進行計數。每個數字將對應一個組合。 – 2014-08-31 16:44:48
我只是不知道如何處理二進制計數到15時的循環。是的,我打算顯示結果,然後將每個組合插入到數據庫表中。 – 2014-08-31 17:13:19