有乙個由按鈕組成的矩陣,5行6列,每按一次改變原來顏色;具體事例如下圖所示:
請寫乙個程式,判斷需要按哪些按鈕,能夠是燈泡全部熄滅。(相關問題細節不再重複)
剛剛輸入:
輸出:2
0 1 1 0 1 0
1 0 0 1 1 1
0 0 1 0 0 1
1 0 0 1 0 1
0 1 1 1 0 0
0 0 1 0 1 0
1 0 1 0 1 1
0 0 1 0 1 1
1 0 1 1 0 0
0 1 0 1 0 0
puzzle #1
1 0 1 0 0 1
1 1 0 1 0 1
0 0 1 0 1 1
1 0 0 1 0 0
0 1 0 0 0 0
puzzle #2
1 0 0 1 1 1
1 1 0 0 0 0
0 0 0 1 0 0
1 1 0 1 0 1
1 0 1 1 0 1
#include "stdio.h"
int puzzle[6][8],press[6][8];
bool guess()
} for (c=1;c<=6;c++)
} return true;
}void enummerate()
while (guess()==false) }}
int main()
for (c=1;c<7;c++)
for (i=0;i
實際上本篇程式的意思是:我先模擬出2^6中情形(為什麼是這麼多呢?因為左右,前後都會對此次按鍵產生影響),也就是第一行的所有情況,再在這樣乙個大迴圈裡面去不斷的試驗,比如每一種情況中,必須要判斷能夠使最後一行恰好熄滅。
實際上,本程式簡潔之處在於,使用一種巧妙的方法去設計那64中情形,即遞加,模擬出乙個二進位制情況而已。
本題目是poj原題。
熄燈問題 列舉
1 問題描述 有乙個由按鈕組成的矩陣,其中每行有6個按鈕,共 5行。每個按鈕的位置上有一盞燈。當按下乙個按鈕後,該按鈕以及周圍位置 上邊 下邊 左邊 右邊 的燈都會改變一次。即,如果燈原來是點亮的,就會被熄滅 如果燈原來是熄滅的,則會被點亮。在矩陣角上的按鈕改變 3盞燈的狀態 在矩陣邊上的按鈕改變 ...
列舉 熄燈問題
問題描述 有乙個由按鈕組成的矩陣,其中每行有6個按鈕,共5行。每個按鈕的位置上有一盞燈。當按下乙個按鈕後,該按鈕以及周圍位置 上邊 下邊 左邊 右邊 的燈都會改變一次。即,如果燈原來是點亮的,就會被熄滅 如果燈原來是熄滅的,則會被點亮。在矩陣角上的按鈕改變3盞燈的狀態 在矩陣邊上的按鈕改變4盞燈的狀...
列舉 熄燈問題
include using namespace std intgetbit char c,int i 取c的第i位 void setbit char c,int i,int v 設定c的第i位為v void flip char c,int i 將c的第i位取反 void outputresult i...