山东省第七届ACM大赛E题题解
来源:互联网 发布:橘子vr软件下载 编辑:程序博客网 时间:2024/06/08 17:37
做题的最关键步骤是读题审题,所以让我们来看一下这一道题的题意。
提炼题意:给你一个图,要你求只与一个边(#)相连的空地(字符'.'或图以外的空间)
首先,我们易知图以外的空间只可能与一个字符‘#’相连,所以用深搜搜#时,当搜过界时ans——记录所有可能位置——加1。当搜到'.'字符时搜该字符四周,如果只有1个#字符ans++,否则无操作。搜到#字符转移位置继续搜。总之,只这三种可能,列出代码如下:
time 236 memory 204kb
#include<stdio.h>
02
#include<cstring>
03
using
namespace
std;
04
05
const
int
maxn=100+10;
06
char
G[maxn][maxn];
07
int
ans,r,c;
08
bool
vis[maxn][maxn];
09
10
int
dr[]={1,-1,0,0};
11
int
dc[]={0,0,1,-1};
12
13
void
init()
14
{
15
memset
(G,0,
sizeof
(G));
16
memset
(vis,
false
,
sizeof
(vis));
17
ans=0;
18
}
19
20
void
dfs(
int
i,
int
j,
int
way)
21
{
22
vis[i][j]=
true
;
23
if
(way==1)
24
{
25
int
cnt=0;
26
for
(
int
k=0;k<4;k++) {
int
x=i+dr[k];
int
y=j+dc[k];
if
(G[x][y]==
'#'
) cnt++; }
27
if
(cnt==1) ans++;
28
}
29
else
if
(way==2)
30
{
31
for
(
int
k=0;k<4;k++)
32
{
33
int
x=i+dr[k];
34
int
y=j+dc[k];
35
if
(x<0 || x>=r || y<0 || y>=c) ans++;
36
else
if
(!vis[x][y] && G[x][y]==
'.'
) dfs(x,y,1);
37
else
if
(!vis[x][y] && G[x][y]==
'#'
) dfs(x,y,2);
38
}
39
}
40
}
41
42
int
main()
43
{
44
int
T;
45
scanf
(
"%d"
,&T);
46
while
(T--)
47
{
48
scanf
(
"%d %d"
,&r,&c);
49
init();
50
for
(
int
i=0;i<r;i++)
scanf
(
"%s"
,G[i]);
51
for
(
int
i=0;i<r;i++)
52
for
(
int
j=0;j<c;j++)
53
if
(!vis[i][j] && G[i][j]==
'#'
) dfs(i,j,2);
54
printf
(
"%d\n"
,ans);
55
}
56
return
0;
57
}
2 0
- 山东省第七届ACM大赛E题题解
- 山东省第八届ACM大赛I题题解
- 山东省第五届ACM大赛--Problem E: Full Binary Tree
- 2016山东省第七届ACM省赛-部分题解
- 2016年第七届山东省ACM省赛题解
- 第七届ACM山东省赛-E The Binding of Isaac
- 第七届山东省ACM省赛 E The Binding of Isaac
- 山东省第二届ACM B题题解
- 山东省第八届acm大赛 F题 (SDUT 3898)
- 山东省第八届acm大赛 J题 (SDUT 3902)
- 山东省第八届acm大赛 G题 (SDUT 3899)
- 山东省第八届acm大赛 I题 (SDUT 3901)
- 山东省第七届ACM大学生程序设计竞赛 E The Binding of Isaac
- 2016山东省第七届acm省赛 G题Triple Nim
- Execution of Paladin(山东省第七届acm j题)
- 山东省第7届ACM省赛 E题
- 山东省第八届acm省赛E题 三分+二分
- 【第七届山东省ACM竞赛】Square Number
- BZOJ 2749: [HAOI2012]外星人
- C语言指针的概念
- HDU 5869 Different GCD Subarray Query(离线处理+树状数组)
- 06 WebGL的坐标系统
- 问题 B: 最大岛屿 河南省第九届省赛
- 山东省第七届ACM大赛E题题解
- MySQL5.7新特性:lossless replication 无损复制
- Git 读书笔记
- python中的异常捕获处理机制(try...except...等语句)
- 《Ansible自动化运维》—1.(ansible与devops)
- 3. Longest Substring Without Repeating Characters
- 463. Island Perimeter
- C语言中将数组内的元素进行运算
- 【数据结构】——-树和二叉树(二)