NOI 1813 熄燈問題

2021-08-20 10:00:35 字數 1003 閱讀 9724

題解鏈結

題解:跟poj的1753類似(不過需要將結果儲存下來

這裡的列舉只需要列舉第一行即可,然後每次後面的列舉都需要根據前一行來進行判斷是否需要按燈

注意:按乙個燈會改變周圍的狀態,但是注意此時只按了這乙個燈,周圍只是改變狀態並沒有按燈

每次從第二列開始判斷改變時,注意儲存狀態,每次如果此時的第一行不能滿足全部熄滅的狀態的話,要返回之前儲存

#include #include using namespace std;

int ini[5][6];

bool tmp[5][6];

int result[5][6];

int p[4][2]=,,,};//周圍

bool test()

}return true;

}bool iut(int x,int y)

void set(int x,int y)

else

for(int i=0;i<4;i++)else }}

}bool go()}}

return test();

}bool first(int x)

}for(int i=0;i<5;i++)

}if(go())

else

}for(int i=0;i<5;i++)

}return false;

}}else

return false;

}int main()

}first(0);

for(int i=0;i<5;i++){//列印結果矩陣

for(int j=0;j<6;j++){

cout<

1813 熄燈問題

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

1813 熄燈問題(2 1基本演算法之列舉)

總時間限制 1000ms 記憶體限制 65536kb 描述 有乙個由按鈕組成的矩陣,其中每行有6個按鈕,共5行。每個按鈕的位置上有一盞燈。當按下乙個按鈕後,該按鈕以及周圍位置 上邊 下邊 左邊 右邊 的燈都會改變一次。即,如果燈原來是點亮的,就會被熄滅 如果燈原來是熄滅的,則會被點亮。在矩陣角上的按...

NOI 2 1 1813 熄燈問題 題解 C

不廢話了,直接上題。1813 熄燈問題 總time limit 1000ms memory limit 65536kb description 有乙個由按鈕組成的矩陣,其中每行有6個按鈕,共5行。每個按鈕的位置上有一盞燈。當按下乙個按鈕後,該按鈕以及周圍位置 上邊 下邊 左邊 右邊 的燈都會改變一次...