首页 > 代码库 > Codevs 1569 最佳绿草
Codevs 1569 最佳绿草
1569 最佳绿草
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold
题目描述 Description
贝茜正计划着这一天如何美美地咀嚼春天的绿草,远望着农民约翰钟爱的并被分
割为R (1 <= R <= 100) 行和 C (1 <= C <= 100) 列的草场。她想去数一数草场
有多少个草丛。
每个草丛在地图上用‘#‘来表示,或者两个‘#‘连在一起(但不是在一个对角线),
给出草场地图,请告诉贝茜草场上一共有多少个草丛。
例如,下面有一张草场地图 R=5, C=6:
.#....
..#...
..#..#
...##.
.#....
这个草场一共有5个草丛。(1,2);(2,3)+(3+3);(3,6);(4,4)+(4,5);(5,2)
输入描述 Input Description
* 第 1 行: 2个用空格隔开的整数 R , C
* 第 2 至 R+1 行: 草场地图信息
输出描述 Output Description
* 草场上草丛的总个数。
样例输入 Sample Input
5 6
.#....
..#...
..#..#
...##.
.#....
样例输出 Sample Output
5
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #define N 105 5 using namespace std; 6 int n,m,a[N][N],ans,dx[]={0,0,1,-1},dy[]={1,-1,0,0}; 7 void dfs(int x,int y){ 8 a[x][y]=0; 9 for(int i=0;i<4;i++){10 int xx=x+dx[i],yy=y+dy[i];11 if(a[xx][yy]==1) dfs(xx,yy);12 }13 }14 int main()15 {16 char c;17 memset(a,0,sizeof(a));18 scanf("%d%d",&n,&m);19 for(int i=1;i<=n;i++){20 for(int j=1;j<=m;j++){21 cin>>c;22 if(c==‘#‘) a[i][j]=1;23 if(c==‘.‘) a[i][j]=0;24 }25 }26 for(int i=1;i<=n;i++){27 for(int j=1;j<=m;j++){28 if(a[i][j]==1) dfs(i,j),ans++;29 }30 }31 printf("%d",ans);32 return 0;33 }
Codevs 1569 最佳绿草
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。