#include <bits/stdc++.h> using namespace std; /* 1 0 1 1 0 1 1 0 1 */ int a[125][125],v[125][125],sum=0; int pos[8][2] = {{1,0},{1,1},{1,-1},{0,1},{0,-1},{-1,1},{-1,0},{-1,-1}}; int n,l; string str; int valid(int row,int col){ if(row>=0&&row<n&&col>=0&&col<l) return 1; return 0; } void dfs(int i,int j) { v[i][j]=1; for(int k=0;k<8;k++){ if(a[i+pos[k][0]][j+pos[k][1]]==1&&valid(i+pos[k][0],j+pos[k][1])&&v[i+pos[k][0]][j+pos[k][1]]==0){ //cout<<i+position[k][0]<<" :"<<j+position[k][1]<<endl; dfs(i+pos[k][0],j+pos[k][1]); } } } int main() { while(cin>>n>>l) { if(n==0&& l==0) break; sum=0; for(int i=0;i<n;i++) { cin>>str; for(int j=0;j<l;j++) { v[i][j] = 0; a[i][j] = str[j]-'0'; } } for(int i=0;i<n;i++) { for(int j=0;j<l;j++) { if(a[i][j]&&v[i][j]==0) { sum++; dfs(i,j); } } } cout<<sum<<endl; } return 0; } |
Double click to view unformatted code.