費解的開關

2022-05-16 02:11:52 字數 1135 閱讀 8197

你玩過「拉燈」遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應:和這個燈上下左右相鄰的燈也要相應地改變其狀態。

我們用數字「1」表示一盞開著的燈,用數字「0」表示關著的燈。下面這種狀態

10111

01101

10111

10000

11011

在改變了最左上角的燈的狀態後將變成:

01111

11101

10111

10000

11011

再改變它正中間的燈後狀態將變成:

01111

11001

11001

10100

11011

給定一些遊戲的初始狀態,編寫程式判斷遊戲者是否可能在6步以內使所有的燈都變亮。

以前沒調出來,今天調了調,a了。

對於每一種初始狀態,我們試著去找乙個方案使得六步之內把所有的0變成1。

我們發現,如果第一行的方案確定下來,剩下幾行的方案也隨之確定。我們可以二進位制列舉第一行的方案,至於第二行,我們只需要看看第一行還剩下幾個0,第二行的方案就是在第一行剩下的0下面一格點燈。三四五行同理。

開始看錯題了,以為要把1變成0,又懶得改,23、24行算是手動改題了。

#includeusing namespace std;

int n,a[6][6];

bool hf(int x,int y)

void dd(int x,int y)

int work()

for (int s = 0; s < (1 << 5); s++)

}str = 0;

for(int j = 0; j < 5; j++)

if (a[i][j]) str |= (1 << j);

}if(str == 0 && cnt <= 6) ans = min(ans, cnt);

}if(ans == 0x3f3f3f3f)

return -1;

else

return ans;

}int main()

return 0;

}

費解的開關

你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...

費解的開關

時間限制 1 sec 記憶體限制 128 mb 提交 狀態 題目描述 你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字...

費解的開關

你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...