zzulioj1908(小火山的围棋梦想)
来源:互联网 发布:猎豹浏览器mac版下载 编辑:程序博客网 时间:2024/05/15 15:19
一道简单的搜索题。可以搜索每一个点,看这个点是否可以走到边界外,如果不可以走到,说明这个点被包围了,注意用bfs来做,(反正我用dfs超时了,不过听巨巨说他是用dfs做的,不知道怎么过了 ╮(╯▽╰)╭);
#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;char a[30][30];int b[30][30],m,n,flag;typedef struct{ int x,y;} P;P que[2000];void bfs(int head,int tail){ int tx,ty,k; int next[4][2]= {{0,1},{1,0},{0,-1},{-1,0}}; while(head<tail) { for(k=0; k<=3; k++) { tx=que[head].x+next[k][0]; ty=que[head].y+next[k][1]; if(tx<0||ty<0||tx>n-1||ty>m-1) { flag=1; return; } if(a[tx][ty]=='.'&&b[tx][ty]==0) { b[tx][ty]=1; que[tail].x=tx; que[tail].y=ty; tail++; } } head++; } return;}int main(){ int t,i,j,k,head,tail; k=0; scanf("%d",&t); while(t--) { memset(a,0,sizeof(a)); scanf("%d%d",&n,&m); for(i=0; i<n; i++) scanf("%s",a[i]); for(i=0; i<n; i++) for(j=0; j<m; j++) { if(a[i][j]=='.') { head=1; tail=1; memset(b,0,sizeof(b));//初始化标记数组很重要; que[tail].x=i; que[tail].y=j; tail++; b[i][j]=1; flag=0; bfs(head,tail); if(flag==0) a[i][j]='*'; } } printf("Case %d:\n",++k); for(i=0; i<n; i++) puts(a[i]); } return 0;}
0 0
- zzulioj1908(小火山的围棋梦想)
- zzulioj1908: 小火山的围棋梦想
- zzulioj1908小火山的围棋梦想(dfs+技巧)
- zzulioj1908: 小火山的围棋梦想(dfs)
- 小火山的围棋梦想
- 小火山的围棋梦想
- 小火山的围棋梦想
- 小火山的围棋梦想
- 小火山的围棋梦想
- 【zzuliOJ】1908 - 小火山的围棋梦想(dfs)
- zzuli 1908: 小火山的围棋梦想(dfs)
- ZZULIOJ 1908: 小火山的围棋梦想 (DFS)
- zzulioj:1908: 小火山的围棋梦想(BFS)
- 【ZzuliOJ 1908】小火山的围棋梦想(DFS/BFS)
- Problem H: 小火山的围棋梦想
- 1908: 小火山的围棋梦想
- 小火山的围棋梦想ZZULIOJ
- 1908: 小火山的围棋梦想
- 如何在ScrollView 中如何嵌入ListView
- 常见的全局变量定义
- HSV颜色相似度
- 用户,组管理
- Eclipse中使用aar文件
- zzulioj1908(小火山的围棋梦想)
- zzulioj-1899
- 设置模式-创建型
- StringTokenizer类的使用
- 系统调用的实现原理
- iOS TabBar高度自动会变高
- android 搜索框实现方法,还在手写搜索框?out了!附加Toast及时改变内容
- html/css手机网站基础代码
- Python在自动化运维时经常会用到的方法