#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.