ZZULIoj 1908 小火山的围棋梦想
Description
Input
Output
Sample Input
2
3 3
***
*.*
***
4 4
.*..
*.*.
*.*.
.*..
Sample Output
Case 1:
***
***
***
Case 2:
.*..
***.
***.
.*.. 先记录'.'的坐标,然后对第一个'.'的坐标进行深搜,搜的'.'都标记若搜到点没有在最外边的说明这些点一定被'*'包围,全部变成'*'.
#include<cstdio>
#include<string.h>
int dx[]={-,,,};
int dy[]={,,-,};
char map[][];
int flag[][];
int n,m,good;
struct stu
{
int x,y;
}key[];
void f(int xx,int yy)
{
int nx,ny,i,j;
if(xx== || xx == n- || yy == || yy == m-) //判断是否是外围的点
{
good=;
}
for(i = ; i < ; i++)
{
nx=xx+dx[i];
ny=yy+dy[i];
if(nx >= && ny >= && nx < n && ny < m && flag[nx][ny] == && map[nx][ny] == '.')
{
flag[nx][ny]=;
f(nx,ny);
}
}
}
int main()
{
int t,s=; scanf("%d",&t); while(t--)
{
int i,j,k; int num=; scanf("%d %d",&n,&m); memset(map,'.',sizeof(map)); for(i = ; i < n ; i++)
{
scanf("%s",map[i]);
for(j = ; j < m ; j++)
{
if(map[i][j] == '.')
{
key[++num].x=i;
key[num].y=j;
} }
}
for(i = ; i <= num ; i++)
{
memset(flag,,sizeof(flag)); //每次都要清零 good=; flag[key[i].x][key[i].y]=; if(map[key[i].x][key[i].y] == '.') f(key[i].x,key[i].y); if(good == ) //good=0说明没有最外围的点
{
for(k = ; k < n ; k++)
{
for(j = ; j < m ; j++)
{
if(flag[k][j] == )
map[k][j]='*';
}
}
}
}
printf("Case %d:\n",++s); for(i = ; i < n ; i++)
{
for(j = ; j < m ; j++)
{
printf("%c",map[i][j]);
} printf("\n");
}
}
}
ZZULIoj 1908 小火山的围棋梦想的更多相关文章
- Problem H: 小火山的围棋梦想 多校训练2(小火山专场)
题目链接:http://acm.zzuli.edu.cn/zzuliacm/problem.php?id=1908 题意:如果'.'被'*'围起来,就把'.'变为'*'. 分析:如果是'*'直接输出, ...
- ZZULIoj 1907 小火山的宝藏收益
Description 进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通. 每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这 ...
- ZZULIoj 1912 小火山的爱情密码
Description 小火山获得了一个字符串,然而大火山让小火山从里面截取一段字符串,并且让小火山截取的字符串满足一些字符达到一定数量. 小火山觉得很容易,但是他想要知道他至少得截取多长的字符串. ...
- ZZULIoj 1913: 小火山的计算能力
Description 别人说小火山的计算能力不行,小火山很生气,于是他想证明自己,现在有一个表达式,他想计算出来. Input 首先是一个t(1<=20)表示测试组数.然后一个表达式,表达式长 ...
- zzulioj 1907小火山的宝藏交易(dfs记忆化搜索)
#include <stdio.h> #include <algorithm> #include <string.h> #include <vector> ...
- zzuliOJ 1904小火山的股票交易;
#include <stdio.h> #include <algorithm> #include <string.h> using namespace std; # ...
- (zzuli)1907 小火山的宝藏收益
Description 进去宝藏后, 小火山发现宝藏有N个房间,且这n个房间通过N-1道门联通. 每一个房间都有一个价值为Ai的宝藏, 但是每一个房间也都存在一个机关.如果小火山取走了这个房间的宝藏, ...
- zzuli 1907: 小火山的宝藏收益 邻接表+DFS
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 113 Solved: 24 SubmitStatusWeb Board Description ...
- 微信小程序,前端大梦想(六)
微信小程序,前端大梦想(六) 微信小程序之联合百度API实现定位 定位功能对于我们都不陌生,在移动端的应用中更是不可或缺的功能,小程序中也提供了对应的API帮助我们完成定位的实现,但是目前小程序的定位 ...
随机推荐
- OpenCv图像像素操作
1:像素 有两种直接操作像素点的方法: 第一种: 将其转化为numpy.array格式,直接进行操作. 第二种:使用Opencv提供的Get1D,Get2D等函数. 2:获取行和列像素 有一下四个函数 ...
- android动画(2)自定义动画
public class CustomAnimation extends Animation { // 这个方法可以获得动画view的width,height,以及它父view的width @Over ...
- h5-23-百度地图api
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...
- 记录两个python itchat的用法博客网址
http://www.tuicool.com/articles/VJZRRfn https://itchat.readthedocs.io/zh/latest/
- PL/SQL笔记(1)-流程控制,循环,异常,块
流程控制 1.If,then,else,elsif(不是elseif) ' then null; endif; 2.Case 简单case表达式: 搜索型Case表达式: 3.goto语句 begin ...
- 关于重置功能(type="reset")的相关问题
当一个按钮具有 type="reset";的按钮是具有重置表单标签的功能的,但是当具有type="hidden"; 属性的标签的值就不会被重置,这点要留意.可以 ...
- VCS 查看代码覆盖率
代码覆盖率 代码覆盖率测试一般包括行覆盖,条件覆盖,FSM覆盖,翻转覆盖率等.在不同的代码级别有不同的覆盖率,Behavioral code包含line+condition+path(branch)+ ...
- DMA简介
直接存储器访问 直接存储器访问(Direct Memory Access,DMA)是计算机科学中的一种内存访问技术.它可以让外设可以独立地直接读写系统存储器,而不需绕道中央处理器(CPU),DMA是一 ...
- sql语句分为三类(DML,DDL,DCL)-介绍
本文知识来源自:<Oracle专家高级编程> 分享作者:Vashon 时间:20150415 DDL is Data Definition Language statements. Som ...
- knockout Observable Array(监控数组)
Observable Array(监控数组)的作用 列表操作是经常会遇到的一个场景,使用监控数组,你可以: 保存列表对象,并且使用Ko提供的丰富的API操作列表元素(支持内建js Array的方法,以 ...