列舉 熄燈問題

2021-07-04 05:06:34 字數 1286 閱讀 6468

有乙個由按鈕組成的矩陣,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...