1908: 小火山的围棋梦想
来源:互联网 发布:linux nginx php7配置 编辑:程序博客网 时间:2024/05/17 04:53
1908: 小火山的围棋梦想Time Limit: 1 Sec Memory Limit: 128 MB Submit: 209 Solved: 50 SubmitStatusWeb BoardDescription 小火山最近喜欢上了围棋。对于围棋,其实小火山是一窍不通的。现在棋盘上,有很多小火山的棋子。 如果棋盘上有这样的一个位置, 那么这个位置也会变成小火山 的棋子;这样的位置是指小火山的棋子将该位置围起来。 现在,小火山想知道实际棋盘是什么样子的。 你快来帮帮他吧! Input输入第一行是一个整数T(T <= 30), 表示一共有T组数据。每组数据,第一行为两个整数n, m(1 <= n, m <= 25), 随后一个n*m的矩阵代表棋盘,其中"."是代表没放棋子的位置, "*"代表小火山的棋子。 Output对于每组数据输出一个n*m的棋盘, 代表实际的棋盘。Sample Input 2 3 3 *** *.* *** 4 4 .*.. *.*. *.*. .*..Sample Output Case 1: *** *** *** Case 2: .*.. ***. ***. .*..
题解上看的不是很懂自己用DFS搞出来了
下面是题解
先把所有的点加入队列
然后对于队列中每一个点
如果当前点是* 则不用动
如果当前点是. 周围的点都在队列中,则这个点也不用动
如果当前点是. 周围的点至少一个不在队列中,或者在边界处,则出队
最后将出不了队列的点全部置为*
代码跟题解并不一样
#include<cstdio>#include<cstring>const int MAXX=30;char map[MAXX][MAXX];int n,m;int xi[4]={1,-1,0,0};int yi[4]={0,0,1,-1};bool K;int vis[MAXX][MAXX];void DFS(int x,int y){ if(x==1||x==n||y==0||y==m-1){ K=true;vis[x][y]=3; } for(int i=0;i<4;i++){ int nx=x+xi[i]; int ny=y+yi[i]; if(vis[nx][ny]==2 && nx>=1 && ny>=0 && nx<=n && ny<m){ vis[nx][ny]=1; DFS(nx,ny); if(nx==1||nx==n||ny==0||ny==m-1){ K=true;vis[nx][ny]=3; } if(K) vis[nx][ny]=3; } } if(K) vis[x][y]=3;}int x[MAXX];int y[MAXX];int main(){ int T; scanf("%d",&T);int t=1; while(T--){ scanf("%d %d",&n,&m); int a=0; memset(vis , 0 ,sizeof(vis)); for(int i=1;i<=n;i++){ scanf("%s",map[i]); for(int j=0;j<m;j++){ if(map[i][j]=='*') vis[i][j]=1; else{ x[a]=i; y[a++]=j; vis[i][j]=2; } } } for(int i=1;i<=n;i++){ if(map[i][0]=='.') DFS(i,0); if(map[i][m-1]=='.') DFS(i,m-1); } for(int i=0;i<m;i++){ if(map[1][i]=='.') DFS(1,i); if(map[n][i]=='.') DFS(n,i); } for(int i=1;i<=n;i++){ for(int j=0;j<m;j++){ if(map[i][j]=='.'&&vis[i][j]!=3) map[i][j]='*'; } } printf("Case %d:\n",t++); for(int i=1;i<=n;i++){ printf("%s\n",map[i]); } } return 0;}
0 0
- 1908: 小火山的围棋梦想
- 1908: 小火山的围棋梦想
- 1908: 小火山的围棋梦想(dfs)
- zzulioj -- 1908 小火山的围棋梦想
- 【zzulioj 1908 小火山的围棋梦想】
- 1908: 小火山的围棋梦想
- zzuli 1908 小火山的围棋梦想
- ZZUILOJ-【1908: 小火山的围棋梦想】
- 小火山的围棋梦想
- 小火山的围棋梦想
- 小火山的围棋梦想
- 小火山的围棋梦想
- 小火山的围棋梦想
- zzuli OJ 1908: 小火山的围棋梦想 【DFS】
- 【zzuliOJ】1908 - 小火山的围棋梦想(dfs)
- zzuli 1908: 小火山的围棋梦想(dfs)
- zzulioj 1908 小火山的围棋梦想(思维+dfs)
- Zzuli OJ-----1908 小火山的围棋梦想
- 【数据库管理】数据库自动维护任务介绍
- 二维数组,split应用
- Charles4.0最新版破解(更新至4.0.1)
- Oracle数据库语句大全
- 【51Nod】1007 - 正整数分组(01背包)
- 1908: 小火山的围棋梦想
- 深入浅出设计模式之适配器模式
- [noip2015] 信息传递
- Java算法——求100—999之间的所有水仙花数,并统计一共有几个
- AndroidVerifyBoot
- PHP Class各种方法和类的使用
- 如何在caffe中添加新的Layer
- 组合游戏(Nim 、反Nim)
- rt-thread的小内存管理算法分析