//列舉第一行所有狀態,之後再下一行對於第一行每一種狀態進行處理,如果第一行對應
//的列是0則必須在下一行按下對應的列,直至迴圈到第四行位置,這時如果第五行全部為1滿足條件
//否則該方案不滿足條件
#include#includeusing namespace std;
const int inf = 100000;
char g[10][10];
int dx[5] = ,dy[5] = ;
//實現將對應的上下左右燈狀態翻轉
void turn(int x,int y)
}//列舉所有方案,返回方案最小步數
int work()
}bool is_successful = true;
for(int i = 0;i < 5;i++)
if(g[4][i] == '0')
if(is_successful) ans = min(res,ans);
memcpy(g, backup, sizeof backup);
}if(ans > 6) return -1;
return ans;
}int main()
return 0;
}
95 費解的開關
簡單來說,這道題目是求我們最少需要多少步可以將所有的燈都開啟,也就是將矩陣全部變為1。對於我們開燈其實是有兩個屬性 1 開燈的順序是無所謂的 2 乙個格仔最多隻需要按一次 對於乙個5 5的矩陣,我們可以把每一行看作一串二進位制數,那麼我們就可以使用二進位制來表示當前這一行的所有按開關或不按開關的組合...
95 費解的開關
原題鏈結 include include include include using namespace std const int maxn 6 char state maxn maxn 儲存遊戲狀態的矩陣,使用char型別方便一次輸入一行 char backup maxn maxn 用於備份遊戲...
acwing 95 費解的開關
時 空限制 1s 256mb 你玩過 拉燈 遊戲嗎?25盞燈排成乙個5x5的方形。每乙個燈都有乙個開關,遊戲者可以改變它的狀態。每一步,遊戲者可以改變某乙個燈的狀態。遊戲者改變乙個燈的狀態會產生連鎖反應 和這個燈上下左右相鄰的燈也要相應地改變其狀態。我們用數字 1 表示一盞開著的燈,用數字 0 表示...