博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 2165题解此题不算难可是有一些细节需注意,很容易出错。总归就是BFS加队列,用STL实现较方便...
阅读量:4458 次
发布时间:2019-06-08

本文共 2228 字,大约阅读时间需要 7 分钟。

1 #include
2 #include
3 #include
4 5 using namespace std; 6 7 queue
q; 8 int main() 9 {
10 int i, w, h, k, j; 11 int visit[21][21]; 12 char s[21][21]; 13 14 while(scanf("%d%d", &w, &h) != EOF) 15 {
16 if(w==0 && h==0) break; 17 getchar(); //此处是为了处理enter换行键,不能省,此处较容易出错,我也是调了两个小时才恍然大悟。 18 for(i=1; i<=h; i++) 19 {
20 for(j=1; j<=w; j++) 21 {
22 scanf("%c",&s[i][j]); 23 if(j==w) getchar();//此处和上述一样为了处理换行符。 24 } 25 } 26 for(i=1; i<=h; i++) 27 {
28 for(j=1; j<=w; j++) 29 { 30 if(s[i][j]=='@') 31 {
32 visit[i][j] = 1;//标记后就不能访问了 33 q.push(i); 34 q.push(j); 35 } 36 if(s[i][j]=='#') 37 visit[i][j] = 1;//和上述标记一样 38 if(s[i][j]=='.') 39 visit[i][j] = 0; 40 } 41 } 42 k = 0; //每次访问结束后队首出队,记录出队多少次,就可知道访问几次,从而可判断访问到了几个',' 43 while(!q.empty()) 44 {
45 int x, y; 46 x = q.front(); 47 q.pop(); 48 y = q.front(); 49 q.pop(); 50 k++; 51 if(visit[x-1][y]==0 && x-1>=1) 52 {
53 visit[x-1][y] = 1; 54 q.push(x-1); 55 q.push(y); 56 } 57 if(visit[x+1][y]==0 && x+1<=h) 58 {
59 visit[x+1][y] = 1; 60 q.push(x+1); 61 q.push(y); 62 } 63 if(visit[x][y+1]==0 && y+1<=w) 64 {
65 visit[x][y+1] = 1; 66 q.push(x); 67 q.push(y+1); 68 } 69 if(visit[x][y-1]==0 && y-1>=1) 70 { 71 visit[x][y-1] = 1; 72 q.push(x); 73 q.push(y-1); 74 } 75 } 76 printf("%d\n",k); 77 } 78 return 0; 79 } 80 81

转载于:https://www.cnblogs.com/cn19901203/archive/2011/08/22/2149645.html

你可能感兴趣的文章
linux 小技巧(磁盘空间搜索)
查看>>
iOS开发——捕获崩溃信息
查看>>
(for 循环)编程找出四位整数 abcd 中满足 (ab+cd)(ab+cd)=abcd 的数
查看>>
tomcat使用spring-loaded实现应用热部署
查看>>
boost1.53中的lock-free
查看>>
链表_leetcode203
查看>>
基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
查看>>
连接不上sql server服务器的解决方案
查看>>
记录安装oracle的那些事(二)之双系统安装
查看>>
c3po数据库连接池中取出连接
查看>>
bootstrap-table 分页
查看>>
使用本机IP调试web项目
查看>>
【Java面试题】58 char型变量中能不能存贮一个中文汉字?为什么?
查看>>
C++ Primer 第六章 函数
查看>>
交互设计算法基础(3) - Quick Sort
查看>>
Ubuntu各种软件的安装
查看>>
智能社的邀请码
查看>>
算法与分析 统计数字问题和整数因子分解问题?
查看>>
变量提升
查看>>
谜题88:原生类型的处理
查看>>