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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

洛谷 P1162 填涂颜色题解

發布時間:2025/3/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 P1162 填涂颜色题解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

由數字00組成的方陣中,有一任意形狀閉合圈,閉合圈由數字11構成,圍圈時只走上下左右44個方向。現要求把閉合圈內的所有空間都填寫成22.例如:6 \times 66×6的方陣(n=6n=6),涂色前和涂色后的方陣如下:

0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 2 2 1 1 1 2 2 2 1 1 2 2 2 2 1 1 1 1 1 1 1

輸入格式

每組測試數據第一行一個整數n(1 \le n \le 30)n(1n30)

接下來nn行,由00和11組成的n \times nn×n的方陣。

方陣內只有一個閉合圈,圈內至少有一個00。

//感謝黃小U飲品指出本題數據和數據格式不一樣. 已修改(輸入格式)

輸出格式

已經填好數字22的完整方陣。

輸入輸出樣例

輸入 #1復制 6 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 1 1 1 輸出 #1復制 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 2 2 1 1 1 2 2 2 1 1 2 2 2 2 1 1 1 1 1 1 1

說明/提示

1 \le n \le 301n30


?

題解

這道題有一個簡單的算法就是輸入時將所有為0的數據都填寫為2,然后從4個邊向內部進行BFS,如果搜索到2就將其改為0,并繼續搜索,如果搜索到1或0就停止搜索。

1 #include <iostream> 2 #include <stdio.h> 3 #include <math.h> 4 #include <algorithm> 5 #include <string.h> 6 7 using namespace std; 8 9 const int MAXN = 105; 10 int n, map[MAXN][MAXN], vis[MAXN][MAXN]; 11 int pos[4][2] = {0, 1, 0, -1, 1, 0, -1, 0}; 12 13 struct Node 14 { 15 int x, y; 16 }; 17 18 Node q[MAXN]; 19 int front, rear; 20 int a, b; 21 22 void bfs() 23 { 24 Node now; 25 now.x = a; 26 now.y = b; 27 if(map[a][b] != 2) 28 { 29 return; 30 } 31 front = rear = 0; 32 q[rear] = now; 33 rear++; 34 while(front < rear) 35 { 36 now = q[front++]; 37 if(map[now.x][now.y] == 2) 38 { 39 map[now.x][now.y] = 0; 40 } 41 if(now.x == 7) 42 { 43 now.x = 7; 44 } 45 for(int i = 0; i < 4; i++) 46 { 47 int nx = now.x + pos[i][0]; 48 int ny = now.y + pos[i][1]; 49 if(nx <= n && nx > 0 && ny <= n && ny > 0 50 && vis[nx][ny] == false 51 && map[nx][ny] == 2) 52 { 53 map[nx][ny] = 0; 54 vis[nx][ny] = true; 55 q[rear].x = nx; 56 q[rear].y = ny; 57 rear++; 58 } 59 } 60 } 61 } 62 63 64 int main() 65 { 66 cin >> n; 67 for(int i = 1; i <= n; i++) 68 { 69 for(int j = 1; j <= n; j++) 70 { 71 cin >> map[i][j]; 72 if(map[i][j] == 0) 73 { 74 map[i][j] = 2; 75 } 76 } 77 } 78 for(int i = 1; i <= n; i++) 79 { 80 a = 1; 81 b = i; 82 bfs(); 83 } 84 for(int i = 1; i <= n; i++) 85 { 86 a = n; 87 b = i; 88 bfs(); 89 } 90 for(int i = 1; i <= n; i++) 91 { 92 a = i; 93 b = 1; 94 bfs(); 95 } 96 for(int i = 1; i <= n; i++) 97 { 98 a = i; 99 b = n; 100 bfs(); 101 } 102 for(int i = 1; i <= n; i++) 103 { 104 for(int j = 1; j <= n; j++) 105 { 106 cout << map[i][j] << " "; 107 } 108 cout << endl; 109 } 110 return 0; 111 }

這個BFS并不難寫,不過當時犯了一個小錯誤,導致2/3/4個樣例都是WA,特別是第2個樣例在本機輸出的結果和標準答案一致,但是提交后總是說一個位置應該為0,輸出了2。查了很久,最后發現是把pos[4][2]寫成了pos[2][4]。數組定義錯了,導致遍歷時移動的位置錯誤了,而且本機的對應內存的數據和測試機不同,所以在本機上是過了,但是測試機沒有過。

轉載于:https://www.cnblogs.com/zealsoft/p/11404420.html

總結

以上是生活随笔為你收集整理的洛谷 P1162 填涂颜色题解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 波多野结衣一区二区三区高清av | 欧产日产国产精品 | 成人a区| а天堂中文在线官网 | 特大黑人巨交性xxxx | 99久久久久成人国产免费 | 国产网站免费看 | japanese国产在线观看 | 日韩精品黄 | 日本十大三级艳星 | 天天干狠狠 | 天天国产视频 | 精品人妻久久久久一区二区三区 | 西西午夜 | 可以免费看的黄色网址 | 福利社午夜 | 欧美老肥妇做.爰bbww视频 | 波多野结衣潜藏淫欲 | 性色av一区二区三区四区 | 黄色免费在线网站 | 卡通动漫av| 亚洲av第一成肉网 | 国产精品成 | 日韩精品免费一区二区三区竹菊 | 国产精品福利一区 | 欧美大片视频在线观看 | 91a视频| 在线观看免费av片 | 爽爽爽av| 高清精品xnxxcom| 成人激情视频 | 亚洲青青操 | 豆国产97在线 | 亚洲 | 色无极亚洲影院 | 久久久久久久久久一级 | 伊人精品| 中文字字幕码一二三区 | 国产成人在线精品 | 爱爱精品 | 九色精品视频 | 亚洲男人网 | 男操女免费网站 | 夜夜天天操 | 亚洲最大的成人网 | 欧美激情综合 | 小柔好湿好紧太爽了国产网址 | 亚洲综合图片区 | 亚洲欧美国产一区二区 | www.av小说 | 国产91综合 | 无码一区二区波多野结衣播放搜索 | 国产又黄又嫩又滑又白 | 一本大道东京热无码 | 色呦呦入口 | 永久免费网站直接看 | 亚洲图片 欧美 | 国产成人aⅴ | 国产在线观看 | 国产网红主播精品av | 91久久综合亚洲鲁鲁五月天 | 国产伦精品一区二区三区视频免费 | 男人天堂成人 | 少妇久久久 | 久操视频在线观看免费 | a激情| 东北熟女一区二区三区 | 爱爱福利社 | 国产欧美一区在线观看 | 在线亚洲天堂 | 波多野结衣av在线观看 | 免费精品在线 | 一二三区免费 | 色网站入口| 波多野结衣视频在线观看 | 波多野42部无码喷潮 | www.精品一区 | 撕开少妇裙子猛然进入 | 色.www| 97人人爱 | 国产日本一区二区三区 | 超碰在线免费播放 | 少妇人妻一区 | 超碰97在线资源 | www.69av.com| www三级| 色欲人妻综合网 | 国产毛片一区二区 | 清纯唯美第一页 | 久久久久久久久久久97 | 无码国内精品人妻少妇蜜桃视频 | 午夜免费看 | www.av在线播放 | 老司机福利精品 | 嫩草视频在线观看免费 | 欧美一级特黄aaaaaa大片在线观看 | 国产精品嫩草影院av蜜臀 | 男人的天堂网在线 | 在线高清观看免费 | 欧美另类xxxx|