/*problem:poj1562
*author:gubojun
*time:2012.7.27
*language:C
*题目大意:求有多少个不相连的区域代码中的解释很多了,别的不说了
*/
#include<stdio.h>
#include<string.h>
#define N 101
char map[N][N];
int n,m,sum;
void dfs(int i,int j)
{
//如果 map[i][j]='@'或超出范围,返回
if(map[i][j]!='@'||i<0||j<0||i>=m||j>=n) return;
else
{
map[i][j]='*';
//调用递归把与'@'相连的'@'都变成'*'
dfs(i-1,j-1);
dfs(i-1,j);
dfs(i-1,j+1);
dfs(i,j-1);
dfs(i,j+1);
dfs(i+1,j-1);
dfs(i+1,j);
dfs(i+1,j+1);
}
}
int main()
{
int i,j;
freopen("in.txt","r",stdin);
while(scanf("%d%d",&m,&n)!=EOF)//输入图形有多少行多少列—m行n列
{
if(m==0) break;//如果m==0就退出
sum=0;//初始化sum
for(i=0;i<m;i++)
scanf("%s",map[i]);//输入图形
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(map[i][j]=='@')//判断map中是否有'@'
{
dfs(i,j);//避免重复统计
sum++;
}
}
}
printf("%d\n",sum);//输入结果
}
return 0;
}
北大ACM poj1562
原创
©著作权归作者所有:来自51CTO博客作者gubojun的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:ACM题目:英雄护美
下一篇:北大ACM poj 1001
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
poj1562 Oil Deposits(简单的深搜)
Oil DepositsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 1439
poj1562 poj 1562 Oil Deposits i++ #include -
北大ACM poj 1050
题意:给定一个n*n的矩阵,求一个子矩阵,使得该矩阵的元素之和最大。
poj POJ Poj 北大ACM Max -
北大ACM poj 1001
网上搜来的借鉴一下#include { int p[300]={1},tmp=0; f*=1e6; for(
1001 poj POJ Poj 北大ACM -
spring注解如何起作用
前置条件: 项目架构: 1、在Spring中,采用配置ApplicationContext.xml文件如下 采用以上方式,是于配置文件的方式进行配置。项目同样可以正确运行,但随着项目工程的增加,ApplictionCon
spring注解如何起作用 spring 正则表达式 xml文件