費解的開關

2021-10-18 09:47:46 字數 1238 閱讀 3752

規律:

順序可以任意

每個格仔只能按一次

每一行的操作完全被上一行燈滅的情況來決定

# 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...