#include "stdio.h" #include "math.h" int map[100][100],vis[100][100]; int m,n,i,j,is,js; int dir[8][2]={{-1,0},{1,0},{0,-1},{0,1},{-1,-1},{1,1},{-1,1},{1,-1}}; int sum; int fit(int x,int y) { if(x>=0&&x<n) if(y>=0&&y<n) return 1; return 0; } int fun(int x,int y) { int nowx,nowy,tempx,tempy; nowx=x; nowy=y; vis[y][x]=1; for(int i=0;i<8;i++) { tempx=x+dir[i][0]; tempy=y+dir[i][1]; if(fit(tempx,tempy)&&map[tempy][tempx]==1&&vis[tempy][tempx]==0) { fun(tempx,tempy); } } return 1; } int main() { while(scanf("%d%d",&m,&n)!=EOF&&(m||n)) { sum=0; for(i=0;i<m;i++) { for(j=0;j<n;j++) { scanf("%1d",&map[i][j]); vis[i][j]=0; } } for(is=0;is<m;is++) for(js=0;js<n;js++) { if(map[is][js]==1&&vis[is][js]==0) sum=sum+fun(js,is); } printf("%d\n",sum); } return 0; } |
Double click to view unformatted code.