【題目描述】
有乙個5*n的棋盤,棋盤中的一些格仔已經被染成了黑色,你的任務是對最少的格仔染色,使得所有的黑色能連成一塊。
【輸入描述】
第一行乙個整數n(n <= 100),接下來n行每行乙個長度為5的01串,1表示所在格仔已經被染成了黑色,0表示所在格仔沒有被染色。
【輸出描述】
輸出乙個整數,表示最少需要染色的格仔數。
【樣例輸入】
511100
11000
10000
01111
11111
【樣例輸出】
170分迭代搜尋(原諒我蒟蒻):
源**:#include
#include
int x[4]=,y[4]=;
intn,t1,t2,num,total;
bool f[105][6],vis[105][6
];void check(int x,int y) //
遍歷全圖,統計染色點數。
}bool can(int t) //
判斷是否合法。
bool dfs(int x,int y,int now,int sum) //
迭代搜尋,x、y為座標,now表示當前比初始狀態多塗了now個點,sum表示目標是塗sum個點。
for (int a=y+1;a<=5;a++) //
搜尋並連線節點的該行的右邊。
if (!f[x][a])
for (int a=x+1;a<=n;a++) //
同理於上,搜尋節點所在行的下方所有區域。
for (int b=1;b<=5;b++)
if (!f[a][b])
return
false; //
依舊不成立。
}int
main()
}for (int a=0;a<=5*n-total;a++) //
迭代。if (dfs(1,1,0
,a))
}
1050 棋盤染色 2
1050棋盤染色2 題目描述description 有乙個5 n的棋盤,棋盤中的一些格仔已經被染成了黑色,你的任務是對最少的格仔染色,使得所有的黑色能連成一塊。輸入描述input description 第一行乙個整數n 100 接下來n行每行乙個長度為5的01串,1表示所在格仔已經被染成了黑色,0...
1050 棋盤染色 2
時間限制 1 s 空間限制 128000 kb 題目等級 大師 master 題解有乙個5 n的棋盤,棋盤中的一些格仔已經被染成了黑色,你的任務是對最少的格仔染色,使得所有的黑色能連成一塊。輸入描述 input description 第一行乙個整數n 100 接下來n行每行乙個長度為5的01串,1...
1049 棋盤染色
時間限制 1 s 空間限制 128000 kb 題目等級 gold 題解檢視執行結果 有乙個5 5的棋盤,上面有一些格仔被染成了黑色,其他的格仔都是白色,你的任務的對棋盤一些格仔進行染色,使得所有的黑色格仔能連成一塊,並且你染色的格仔數目要最少。讀入乙個初始棋盤的狀態,輸出最少需要對多少個格仔進行染...