ZZULIoj 1908 小火山的围棋梦想

Description

小火山最近喜欢上了围棋。

对于围棋,其实小火山是一窍不通的。现在棋盘上,有很多小火山的棋子。 如果棋盘上有这样的一个位置, 那么这个位置也会变成小火山

的棋子;这样的位置是指小火山的棋子将该位置围起来。

现在,小火山想知道实际棋盘是什么样子的。 你快来帮帮他吧!

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:
.*..
***.
***.
.*..

先记录‘.‘的坐标,然后对第一个‘.‘的坐标进行深搜,搜的‘.‘都标记若搜到点没有在最外边的说明这些点一定被‘*‘包围,全部变成‘*‘.

 1 #include<cstdio>
 2 #include<string.h>
 3 int dx[4]={-1,1,0,0};
 4 int dy[4]={0,0,-1,1};
 5 char map[30][30];
 6 int flag[30][30];
 7 int n,m,good;
 8 struct stu
 9 {
10     int x,y;
11 }key[1000];
12 void f(int xx,int yy)
13 {
14     int nx,ny,i,j;
15     if(xx==0 || xx == n-1 || yy == 0 || yy == m-1)        //判断是否是外围的点
16     {
17         good=1;
18     }
19     for(i = 0 ; i < 4 ; i++)
20     {
21         nx=xx+dx[i];
22         ny=yy+dy[i];
23         if(nx >= 0 && ny >= 0 && nx < n && ny < m && flag[nx][ny] == 0 && map[nx][ny] == ‘.‘)
24         {
25             flag[nx][ny]=1;
26             f(nx,ny);
27         }
28     }
29 }
30 int main()
31 {
32     int t,s=0;
33
34     scanf("%d",&t);
35
36     while(t--)
37     {
38         int i,j,k;
39
40         int num=0;
41
42         scanf("%d %d",&n,&m);
43
44         memset(map,‘.‘,sizeof(map));
45
46         for(i = 0 ; i < n ; i++)
47         {
48             scanf("%s",map[i]);
49             for(j = 0 ; j < m ; j++)
50             {
51                 if(map[i][j] == ‘.‘)
52                 {
53                     key[++num].x=i;
54                     key[num].y=j;
55                 }
56
57             }
58         }
59         for(i = 1 ; i <= num ; i++)
60         {
61             memset(flag,0,sizeof(flag));            //每次都要清零
62
63             good=0;
64
65             flag[key[i].x][key[i].y]=1;
66
67             if(map[key[i].x][key[i].y] == ‘.‘)
68
69             f(key[i].x,key[i].y);
70
71             if(good == 0)                            //good=0说明没有最外围的点
72             {
73                 for(k = 0 ; k < n ; k++)
74                 {
75                     for(j = 0 ; j < m ; j++)
76                     {
77                         if(flag[k][j] == 1)
78                             map[k][j]=‘*‘;
79                     }
80                 }
81             }
82         }
83         printf("Case %d:\n",++s);
84
85         for(i = 0 ; i < n ; i++)
86         {
87             for(j = 0 ; j < m ; j++)
88             {
89                 printf("%c",map[i][j]);
90             }
91
92             printf("\n");
93         }
94     }
95 }

 
时间: 2024-10-11 20:07:01

ZZULIoj 1908 小火山的围棋梦想的相关文章

Problem H: 小火山的围棋梦想 多校训练2(小火山专场)

题目链接:http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1908 题意:如果'.'被'*'围起来,就把'.'变为'*'. 分析:如果是'*'直接输出,如果是'.' 则要对其搜索 如果四个方向都是封闭的,则可以改变.即w[i][j]=4; 如果查询的是'*'或者查询的是已被查询过的'.'  ,则记录上: 如果查询的是'.'而且没有查询标记过,则进行查询: 1 #include<iostream> 2 #include<algorithm&g

ZZULIoj 1913: 小火山的计算能力

Description 别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来. Input 首先是一个t(1<=20)表示测试组数.然后一个表达式,表达式长度不超过200,只有加法和减法,并且保证第一个字符不会是运算符号,最终结果小于2^63-1. Output 输出运算结果. Sample Input 2 1+1 2+1-1 Sample Output 2 2 1 #include<cstdio> 2 #include<string.h>

ZZULIoj 1907 小火山的宝藏收益

Description 进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通. 每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这个房间的宝藏,那么这个房间通往其他房间的门就永远打不开了,也就是说后面的宝藏小火山是得不到了(进入这个房间的门是不会关闭的,小火山还是可以回去的):如果小火山不取这个宝藏,而是去打开通往另一房间的门,那么这个房间的宝藏就会消失, 小火山就得不到这个房间的宝藏. 不过,小火山已经有了藏宝图,知道每一个房间的宝藏的价

zzulioj 1907小火山的宝藏交易(dfs记忆化搜索)

#include <stdio.h> #include <algorithm> #include <string.h> #include <vector> using namespace std; int m, n, vis[11000]; long long dp[11000], v[11000]; vector<int>Q[11000]; long long dfs(int start) { int len; len = Q[start].s

zzuli 1907: 小火山的宝藏收益 邻接表+DFS

Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 113  Solved: 24 SubmitStatusWeb Board Description 进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通. 每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这个房间的宝藏,那么这个房间通往其他房间的门就永远打不开了,也就是说后面的宝藏小火山是得不到了(进入这个房间的门是不会关闭的,小火山还是可以回去的

zzuli 1905 小火山的跳子游戏

Description 小火山和火山火山在一块玩跳子游戏.规则如下: 1:跳子的起始位置为0,棋盘大小从1到N 2:每次跳子跳k步. 例如当前位置为i, 那么下一步为i + k 3:跳子过程中,碰到1或N则往回跳.例如当前位置为4, N = 6, K = 5的 时候, 那么下次跳子, 应该是 5, 6, 5 ,4, 3.最后落在3的位置, 再一次 跳子为2 1 2 3 4.最后落在4的位置: 现在小火山想知道经过任意次跳子最后能否将这个棋盘上的每个数字都走过. Input 输入第一行是一个整数T

小火山的宝藏收益 多校训练2(小火山专场) poj(邻接表+DFS)

http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1907 Description 进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通. 每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这个房间的宝藏,那么这个房间通往其他房间的门就永远打不开了,也就是说后面的宝藏小火山是得不到了(进入这个房间的门是不会关闭的,小火山还是可以回去的):如果小火山不取这个宝藏,而是去打开通往另一房间的门,那么这个

(zzuli)1907 小火山的宝藏收益

Description 进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通. 每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这个房间的宝藏,那么这个房间通往其他房间的门就永远打不开了,也就是说后面的宝藏小火山是得不到了(进入这个房间的门是不会关闭的,小火山还是可以回去的):如果小火山不取这个宝藏,而是去打开通往另一房间的门,那么这个房间的宝藏就会消失, 小火山就得不到这个房间的宝藏. 不过,小火山已经有了藏宝图,知道每一个房间的宝藏的价

《浪潮之巅》小感------我的梦想?

对于一个弄潮的年轻人来讲,最幸运的莫过于赶上一波大潮.---吴军 最近在看吴军的<浪潮之巅>,很好的一本书.从事IT行业的人我觉得都值得看一看,不仅仅是一本IT常识大普及,作者更是向我们揭露了很多IT行业的规律以及发展趋势,很能引起读者的思考. 从 大环境来讲,硅谷真的是一个孕育传奇的地方,但是我更感叹的还是斯坦福大学,确实不愧是世界级名校,成功的把企业与学校结合了起来,产生了不胜枚举的工业 巨子.用作者的话讲开放的心态是这所大学的灵魂,鼓励老师自己开公司,扶持学生创业,为学生融资拉赞助.在国