規律:
順序可以任意
每個格仔只能按一次
每一行的操作完全被上一行燈滅的情況來決定
# include
# include
# include
# include
using
namespace std;
const
int n =6;
char g[n]
[n],backup[n]
[n];
int dx[n]
=,dy[n]=;
void
turn
(int x,
int y)
g[a]
[b]^=1
;}}int
main()
int res =10;
// 這裡我們列舉了第一行的32種按法,不用管是亮是滅,把第一行所有情況都按一遍
// 按每種情況的第一行,去遍歷接下來的行
// 列舉32種第一行的按法只是可能會減少步數,如果直接從第二行開始答案一定是固定的了,找不到最優解或者可能沒有解
for(
int op =
0;op <
32;op++)}
//兩重迴圈來按2,3,4行
for(
int i =
0;i <
4;i++)}
}bool dark =
false
;//判斷是否為全亮
//判斷第五行是否為全亮
for(
int j =
0;j <
5;j++)}
if(!dark)
memcpy
(g,backup,
sizeof g);}
if(res >6)
res =-1
; cout << res << endl;
}return0;
}
費解的開關
你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...
費解的開關
時間限制 1 sec 記憶體限制 128 mb 提交 狀態 題目描述 你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字...
費解的開關
你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...