1908: 小火山的围棋梦想
2016-08-10 20:10
330 查看
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 [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; }
相关文章推荐
- zzulioj1908小火山的围棋梦想(dfs+技巧)
- 【多校训练】ZZULIOJ 1908 小火山的围棋梦想
- ZZUILOJ-【1908: 小火山的围棋梦想】
- zzuli 1908: 小火山的围棋梦想(dfs)
- ZZULIOJ/ 郑轻 OJ 1908: 小火山的围棋梦想(DFS,题型模板)
- 1908: 小火山的围棋梦想(dfs)
- 1908: 小火山的围棋梦想
- Zzuli OJ-----1908 小火山的围棋梦想
- 【zzuliOJ】1908 - 小火山的围棋梦想(dfs)
- ZZULIOJ 1908: 小火山的围棋梦想 (DFS)
- zzulioj-1908-小火山的围棋梦想【DFS】(好题)
- zzulioj 1908: 小火山的围棋梦想 (dfs)
- zzuliOJ 1908:小火山的围棋梦想(DFS+小思维)
- zzulioj:1908: 小火山的围棋梦想(BFS)
- zzuli 1908 小火山的围棋梦想
- 【zzuli-oj】-1908: 小火山的围棋梦想-(DFS,好)
- 1908: 小火山的围棋梦想
- zzuli OJ 1908: 小火山的围棋梦想 【DFS】
- zzuli 1908: 小火山的围棋梦想(bfs加队列)
- 【暑期第二次训练赛】小火山的围棋梦想