时间限制:1秒 内存限制:128M
题目描述
给出一个由数字0~9组成的矩形,其中数字0代表树,1~9代表猴子,凡是由0或矩形边围起来的区域表示有一群猴子在这一带。编程求矩形中有多少群猴子
输入描述
第一行两个正整数,表示矩形的行数m和列数n,1<=m,n<=100
下面为一个mxn的数字矩形
输出描述
一行一个数,表示猴群的数目
样例输入
7 6 100100 000003 000000 000000 050100 004000 000000
样例输出
6
样例代码
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int n,m,cnt;
const int N=1e2+10;
char a[N][N];
int vis[N][N];
int dx[]= {-1,1,0,0};
int dy[]= {0,0,-1,1};
void dfs(int x,int y ) {
vis[x][y]=1;
for(int i=0; i<4; i++) {
int fx=x+dx[i];
int fy=y+dy[i];
if(!vis[fx][fy]&&a[fx][fy]!='0') {
dfs(fx,fy);
}
}
}
int main() {
memset(a,'0',sizeof(a));
cin>>n>>m;
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
cin>>a[i][j];
}
}
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
if(!vis[i][j]&&a[i][j]!='0') {
cnt++;
dfs(i,j);
}
}
}
cout<<cnt;
return 0;
}