POJ1221熄燈問題

2021-10-07 04:56:40 字數 690 閱讀 5385

思路:列舉第一行。從第二行開始,如果上邊一行的等還是開的,就按這個開關,直到最後一行。檢查等是否全滅掉了,若是就輸出按開關的方案。

(位運算用的不習慣,就直接用陣列了)

#include

#include

using

namespace std;

const

int n =10;

int t, light[n]

[n], cnt;

int a[n]

[n], state =(1

<<6)

-1, op[n]

[n];

//這個燈取反

void

flip

(int i,

int j)

//改變周圍燈的狀態

void

change

(int i,

int j)

//檢查是否全滅掉了

bool

check()

void

print()

}int

main()

//檢查上一行的燈是否滅掉

for(

int i =

2;i <=5;

++ i)}if

(check()

)}}}

POJ熄燈問題(列舉法)

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

POJ1222熄燈問題

問題描述 程式 思路1 列舉所有可能的開關狀態,對每個狀態計算下最後燈的情況,看是否都熄滅 每種按鈕有兩種狀態,一共有30個開關,那麼狀態數是2的30次方,太多不可取 思路2 如何減少列舉的數目呢?如果存在某個區域性,一旦這個區域性狀態被確定後,那麼剩餘其他部分的狀態只能 是確定的一種或者不多的n種...

POJ2811熄燈問題

題目描述 事實上,只用列舉第一行或者第一列按鈕的狀態即可。下面以列舉第一行按鈕的狀態為例。因為第一行燈的狀態由第一行和第二行的按鈕決定,所以第一行按鈕的狀態確定之後,為是第一行的燈全部熄滅,第二行按鈕的狀態也就唯一確定了。例如,當第一行按鈕的狀態確定之後 因此,在第一行按鈕的狀態確定之後,第二行按鈕...