View Code of Problem 62

#include<bits/stdc++.h>
using namespace std;

void Find(char a[200][200],int i,int j){
	a[i][j]='0';
	 if(a[i-1][j-1]=='1') Find(a,i-1,j-1);
    if(a[i-1][j]=='1') Find(a,i-1,j);
    if(a[i][j-1]=='1') Find(a,i,j-1);
    if(a[i+1][j+1]=='1') Find(a,i+1,j+1);
    if(a[i+1][j]=='1') Find(a,i+1,j);
    if(a[i+1][j-1]=='1') Find(a,i+1,j-1);
    if(a[i-1][j+1]=='1') Find(a,i-1,j+1);
    if(a[i][j+1]=='1') Find(a,i,j+1);
}//当遇到一只羊时,递归将其周围的羊标记为0,表示是同一群 

int main(){
	int m,n;
	char a[200][200];
	while(cin >> m >> n&&n!=0&&m!=0){
		
		int count=0;
		
		for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				cin >> a[i][j];
			}
		}//输入矩阵 
		
		for(int i=0;i<m;i++){
			for(int j=0;j<n;j++){
				if(a[i][j]=='1'){
					count++;
					Find(a,i,j);
				}
			}
		}
		cout << count << endl; 
	} 
}

Double click to view unformatted code.


Back to problem 62