描述
使用一个由09组成的数字矩阵表示猴群,其中数字0表示树,19表示猴子,凡是由0或者矩形边围起来的区域表示有一群猴子在这一带。给出一个数字矩阵,求其中有多少群猴子。
例如下图中的猴群矩阵中,就有4个猴群。
输入描述
第 1 行为矩形的行数m、列数n,1≤m,n ≤100;
以下m行,为一个m×n的数字矩阵,由数字0~9组成。
输出描述
一行一个数,表示猴群的数目。
#include<bits/stdc++.h>
int n ,m , cnt;
char g[101][101];
int dis[4][2] = {{-1,0},{1,0},{0,-1},{0,1}} ;
void dfs(int x,int y){
for(int i = 0;i < 4;i++){
int tx = x + dis[i][0] , ty = y+dis[i][1];
if(tx >= 1&&tx <= n&&ty >= 1&&ty <= m&&g[tx][ty] != 48){
g[tx][ty] = '0';
dfs(tx,ty);
}
}
}
using namespace std;
int main(){
cin>>n>>m;
for(int i = 1;i <= n;i++)
for(int j = 1;j <= m;j++)cin>>g[i][j];
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(g[i][j] != 48){
cnt++;
g[i][j] = '0';
dfs(i,j);
}
}
}
cout<<cnt;
return 0;
}