熄燈問題 學習筆記

2021-10-19 13:15:33 字數 890 閱讀 6529

就是當第一行開關按下後燈狀態確定,向下逐行可以有乙個確定的開關狀態使得上一行的燈一定全部熄滅,直到最後一行檢查是否也全部熄滅,如果是則得到結果。這裡只需要列舉第一行所有開關的狀態即可,更巧妙的是可以採用二進位制位運算節省空間。

#include

#include

#include

using

namespace std;

char orilights[5]

;//原始燈狀態

char lights[5]

;//改變後燈狀態

char result[5]

;//結果開關狀態

intgetbit

(char c,

int i)

void

setbit

(char

& c,

int i,

int v)

else

}void

flipbit

(char

& c,

int i)

void

outputresult

(int t,

char result)

cout << endl;}}

intmain()

for(

int n =

0; n <64;

++n)}if

(i <4)

//第i+1行燈狀態改變

lights[i +1]

^= switchs;

switchs = lights[i]

;//要讓本行全熄滅,下一行開關狀態已經確定}if

(lights[4]

==0)}

}}

列舉 熄燈問題

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

熄燈問題 詳解

說明 演算法並非原創,於網上大神,本文只是對演算法進行詳細的解釋。題目 noi openjudge 有乙個由按鈕組成的矩陣,其中每行有6個按鈕,共5行。每個按鈕的位置上有一盞燈。當按下乙個按鈕後,該按鈕以及周圍位置 上邊 下邊 左邊 右邊 的燈都會改變一次。即,如果燈原來是點亮的,就會被熄滅 如果燈...

熄燈問題 列舉

1 問題描述 有乙個由按鈕組成的矩陣,其中每行有6個按鈕,共 5行。每個按鈕的位置上有一盞燈。當按下乙個按鈕後,該按鈕以及周圍位置 上邊 下邊 左邊 右邊 的燈都會改變一次。即,如果燈原來是點亮的,就會被熄滅 如果燈原來是熄滅的,則會被點亮。在矩陣角上的按鈕改變 3盞燈的狀態 在矩陣邊上的按鈕改變 ...