費解的開關
你玩過「拉燈」遊戲嗎?
25 盞燈排成乙個 5×5 的方形。
每乙個燈都有乙個開關,遊戲者可以改變它的狀態。
每一步,遊戲者可以改變某乙個燈的狀態。
遊戲者改變乙個燈的狀態會產生連鎖反應:和這個燈上下左右相鄰的燈也要相應地改變其狀態。
我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。
下面這種狀態
10111
01101
10111
10000
11011
在改變了最左上角的燈的狀態後將變成:
01111
11101
10111
10000
11011
再改變它正中間的燈後狀態將變成:
01111
11001
11001
10100
11011
給定一些遊戲的初始狀態,編寫程式判斷遊戲者是否可能在 6 步以內使所有的燈都變亮。
輸入格式
第一行輸入正整數 n,代表資料中共有 n 個待解決的遊戲初始狀態。
以下若干行資料分為 n 組,每組資料有 5 行,每行 5 個字元。
每組資料描述了乙個遊戲的初始狀態。
各組資料間用乙個空行分隔。
輸出格式
一共輸出 n 行資料,每行有乙個小於等於 6 的整數,它表示對於輸入資料中對應的遊戲狀態最少需要幾步才能使所有燈變亮。
對於某乙個遊戲初始狀態,若 6 步以內無法使所有燈變亮,則輸出 −1。
資料範圍
0題解#include#include#include#includeusing namespace std;
const int n=6;
char g[n][n],backup[n][n];
int n;
int dx[n]=,dy[n]=;
void turn(int x,int y)
}int main()
}for(int i=1;i<5;i++)}}
bool suf=true;
for(int i=0;i<5;i++)
}if(suf) res=min(res,stmp);
memcpy(g,backup,sizeof backup);
}if(res>6) cout<<-1<>i&1)
在turn函式中,用g[x][y]^=1,表示取相反結果。
OI刷題記錄
2014 4 18 poj3264 bzoj1699 balanced lineup rmq 2014 4 19 bzoj1012 jsoi2008 最大數maxnumber noi2004 鬱悶的出納員 bzoj3224 tyvj 1728 普通平衡樹 2014 4 20 bzoj1862 105...
面試刷題記錄
寫一段 判斷乙個包括 的表示式是否合法 注意看樣例的合法規則。給定乙個表示式a,請返回乙個bool值,代表它是否合法。測試樣例 a b 5 4 返回 true 測試樣例 a b 5 4 返回 false include vector include iostream using namespace ...
刷題記錄 2015 11 14
現在每天做的題都記錄一下,免得不知道自己在幹什麼。poj2406 用next陣列的定義求迴圈節 poj3261 字尾陣列 題 spoj705 同上,這題我wa了幾次,結果發現 我以為字串只有大寫字母,其實有小寫。如下 poj2406 author duyixian date 2015 11 14 1...