日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Vijos 1197 - 费解的开关

發(fā)布時間:2025/3/15 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Vijos 1197 - 费解的开关 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

描述

你玩過“拉燈”游戲嗎?25盞燈排成一個5x5的方形。每一個燈都有一個開關(guān),游戲者可以改變它的狀態(tài)。每一步,游戲者可以改變某一個燈的狀態(tài)。游戲者改變一個燈的狀態(tài)會產(chǎn)生連鎖反應(yīng):和這個燈上下左右相鄰的燈也要相應(yīng)地改變其狀態(tài)。
我們用數(shù)字“1”表示一盞開著的燈,用數(shù)字“0”表示關(guān)著的燈。下面這種狀態(tài)
10111
01101
10111
10000
11011
在改變了最左上角的燈的狀態(tài)后將變成:
01111
11101
10111
10000
11011
再改變它正中間的燈后狀態(tài)將變成:
01111
11001
11001
10100
11011
給定一些游戲的初始狀態(tài),編寫程序判斷游戲者是否可能在6步以內(nèi)使所有的燈都變亮。
格式

輸入格式

第一行有一個正整數(shù)n,代表數(shù)據(jù)中共有n個待解決的游戲初始狀態(tài)。
以下若干行數(shù)據(jù)分為n組,每組數(shù)據(jù)有5行,每行5個字符。每組數(shù)據(jù)描述了一個游戲的初始狀態(tài)。各組數(shù)據(jù)間用一個空行分隔。
對于30%的數(shù)據(jù),n<=5;
對于100%的數(shù)據(jù),n<=500。
輸出格式

輸出數(shù)據(jù)一共有n行,每行有一個小于等于6的整數(shù),它表示對于輸入數(shù)據(jù)中對應(yīng)的游戲狀態(tài)最少需要幾步才能使所有燈變亮。
對于某一個游戲初始狀態(tài),若6步以內(nèi)無法使所有燈變亮,請輸出“-1”。
樣例1

樣例輸入1

3
00111
01011
10001
11010
11100

11101
11101
11110
11111
11111

01111
11111
11111
11111
11111
Copy
樣例輸出1

3
2
-1
Copy
限制

各個測試點1s
來源

Matrix67原創(chuàng)
.
.
.
.
.

分析

在這里,我們可以發(fā)現(xiàn),每個位置也就點擊一次,而且,固定第一行后,最多只有一種可行方案。由此,我們可以枚舉第一行的32種情況,之后通過遞推,找到最終狀態(tài),遞推結(jié)束,只需檢驗最后一行是否合法即可。
.
.
.
.
.

程序:
#include<iostream> #include<string.h> using namespace std; int a[5][5],b[5][5]; char str[6];void change(int x,int y) {b[x][y]^=1;if (x>0) b[x-1][y]^=1;if (x+1<5) b[x+1][y]^=1;if (y>0) b[x][y-1]^=1;if (y+1<5) b[x][y+1]^=1; }int work(int f1) {int i,j,r=0;for (j=0;j<5;j++){if (f1&(1<<j)){r++;change(0,j);}}for (i=1;i<5;i++){for (j=0;j<5;j++){if (b[i-1][j]==0){if (++r>=7){return 7;}change(i,j);}}}for (j=0;j<5;j++){if (b[4][j]==0){return 7;}}return r; }int main() {int n;cin>>n;for (int w=1;w<=n;w++){int step=99999;for (int i=0;i<5;i++){cin>>str;for (int j=0;j<5;j++)a[i][j]=str[j]-'0';}int j;for (int i=0;i<32;i++){memcpy(b,a,sizeof(b));j=work(i);if (j<step) step=j;}if (step<7) cout<<step<<endl;else cout<<-1<<endl;}return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/YYC-0304/p/9499913.html

總結(jié)

以上是生活随笔為你收集整理的Vijos 1197 - 费解的开关的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。