題目
#include
#include
#include
#include
using
namespace std;
const
int n =6;
char g[n]
[n], backup[n]
[n];
//backup用於儲存,複製原陣列
int dx[5]
=, dy[5]
=;//用於方位轉化
void
turn
(int x,
int y)
}int
main()
for(
int i =
0; i <
4; i ++
)for
(int j =
0; j <
5; j ++)if
(g[i]
[j]==
'0')
bool dark =
false
;for
(int i =
0; i <
5; i ++
)//如果最後一行全為1,全部都為1(只要下面一行為1,上面一行一定為1)
if(g[4]
[i]==
'0')if(
!dark) res =
min(res, step)
;//找出最少的步數,賦值給res
memcpy
(g, backup,
sizeof g)
;//將g陣列還原為初始狀態(與34行對應) }if
(res >
6) res =-1
;//如果超過6次,結果為-1
cout << res << endl;
}return0;
}
遞推 AcWing 95 費解的開關
思路 列舉第一行的所有情況 列舉完第一行後,固定住第一行,此時第二行按哪個按鈕是確定的。假設第一行某盞燈是0,那麼需要按第二行對應的燈泡來改變第一行。同理,操作第三行和第四行 遍歷第五行看看是否都為1。如果都為1,則達到目標。include include using namespace std c...
acwing 95 費解的開關
時 空限制 1s 256mb 你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示...
AcWing 95 費解的開關
你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...