思路:
列舉第一行的所有情況
列舉完第一行後,固定住第一行,此時第二行按哪個按鈕是確定的。假設第一行某盞燈是0,那麼需要按第二行對應的燈泡來改變第一行。
同理,操作第三行和第四行
遍歷第五行看看是否都為1。如果都為1,則達到目標。
#include
#include
using
namespace std;
char g[10]
[10];
int dirx[5]
=;int diry[5]
=;void
turn
(int x,
int y)
}int
work()
}for
(int i =
0; i <
4; i ++)}
}for
(int j =
0; j <
5; j ++)}
if(is_successful && minres > res)
memcpy
(g, backup,
sizeof backup);}
if(minres >
6) minres =-1
;return minres;
}int
main()
return0;
}
AcWing 95 費解的開關(遞推)
題目 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...
acwing 95 費解的開關
時 空限制 1s 256mb 你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示...
AcWing 95 費解的開關
你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示關著的燈。下面這種狀態 101...