我們可以通過列舉第一行的每一種狀態,然後後一行的狀態只能由前面一行確定,這樣就可以找到對應的最小步數。
我的acwing裡的題解:
開始給我看懵了,一直不理解下面這行**
for(int i = 0; i < 5; i++)if(op >> i & 1
)
#include #includeusing
namespace
std;
char g[5][5], backup[5][5
];int dx[5] = , dy[5] = ;
intn;
void turn(int x, inty)}
intmain()
}for(int i = 0; i < 4; i++)
for(int j = 0; j < 5; j++)
if(backup[i][j] == '0'
)
bool success = true
;
for(int i = 0; i < 5; i++)
if(backup[4][i] == '0'
) success = false
;
if(success && ans > cnt) ans =cnt;
}if(ans > 6) ans = -1
; printf(
"%d\n
", ans);
}return0;
}
acwing 95 費解的開關
時 空限制 1s 256mb 你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示...
AcWing 95 費解的開關
你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...
ACwing 95 費解的開關
你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...