日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CODEVS——T 1049 棋盘染色

發(fā)布時(shí)間:2024/1/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CODEVS——T 1049 棋盘染色 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

http://codevs.cn/problem/1049/

?時(shí)間限制: 1 s ?空間限制: 128000 KB ?題目等級(jí) : 黃金 Gold 題解 ?查看運(yùn)行結(jié)果 題目描述?Description

有一個(gè)5×5的棋盤,上面有一些格子被染成了黑色,其他的格子都是白色,你的任務(wù)的對(duì)棋盤一些格子進(jìn)行染色,使得所有的黑色格子能連成一塊,并且你染色的格子數(shù)目要最少。讀入一個(gè)初始棋盤的狀態(tài),輸出最少需要對(duì)多少個(gè)格子進(jìn)行染色,才能使得所有的黑色格子都連成一塊。(注:連接是指上下左右四個(gè)方向,如果兩個(gè)黑色格子只共有一個(gè)點(diǎn),那么不算連接)

輸入描述?Input Description

? ?輸入包括一個(gè)5×5的01矩陣,中間無空格,1表示格子已經(jīng)被染成黑色。

輸出描述?Output Description

輸出最少需要對(duì)多少個(gè)格子進(jìn)行染色

樣例輸入?Sample Input

11100

11000

10000

01111

11111

樣例輸出?Sample Output

1

數(shù)據(jù)范圍及提示?Data Size & Hint 迭代加深搜索 枚舉每次染色的格子數(shù),使用完所有次數(shù)后,遍歷全圖統(tǒng)計(jì)黑格子聯(lián)通的個(gè)數(shù) 染色時(shí),可以從左上,向右下 依次進(jìn)行 1 #include <cstring> 2 #include <cstdio> 3 4 char s[5][5]; 5 int ans,tot,cnt,map[5][5]; 6 7 bool vis[5][5]; 8 int sx,fx[4]={0,1,0,-1}; 9 int sy,fy[4]={1,0,-1,0}; 10 11 void Traversal(int x,int y) 12 { 13 ++tot;vis[x][y]=1; 14 for(int xx,yy,i=0; i<4; ++i) 15 { 16 xx=x+fx[i]; yy=y+fy[i]; 17 if(!vis[xx][yy]&&xx>=0&&xx<5&&yy>=0&&yy<5&&map[xx][yy]) 18 Traversal(xx,yy); 19 } 20 } 21 22 bool DFS(int x,int y,int now) 23 { 24 if(!now) 25 { 26 tot=0; 27 memset(vis,0,sizeof(vis)); 28 Traversal(sx,sy); 29 return (ans+cnt)==tot; 30 } 31 for(int yy=y+1; yy<5; ++yy) 32 { 33 if(map[x][yy]) continue; 34 map[x][yy]=1; 35 if(DFS(x,yy,now-1)) return 1; 36 map[x][yy]=0; 37 } 38 for(int xx=x+1; xx<5; ++xx) 39 for(int yy=0; yy<5; ++yy) 40 { 41 if(map[xx][yy]) continue; 42 map[xx][yy]=1; 43 if(DFS(xx,yy,now-1)) return 1; 44 map[xx][yy]=0; 45 } 46 return 0; 47 } 48 49 int Presist() 50 { 51 for(int i=0; i<5; ++i) 52 scanf("%s",s[i]); 53 for(int i=0; i<5; ++i) 54 for(int j=0; j<5; ++j) 55 { 56 map[i][j]=s[i][j]-'0'; 57 if(map[i][j]) cnt++,sx=i,sy=j; 58 } 59 for(; !DFS(0,0,ans); ) ans++; 60 printf("%d\n",ans); 61 return 0; 62 } 63 64 int Aptal=Presist(); 65 int main(){;}

?

轉(zhuǎn)載于:https://www.cnblogs.com/Shy-key/p/7544323.html

總結(jié)

以上是生活随笔為你收集整理的CODEVS——T 1049 棋盘染色的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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