最水的一道石油竟然改了一个小时,好菜好菜。
x<=r y<=c x<=r y<=c x<=r y<=c x<=r y<=c
#include<stdio.h> #include<algorithm> #include<string.h> using namespace std; int dir[8][2]={0,1, 0,-1, 1,0, -1,0, 1,1, 1,-1, -1,1, -1,-1}; int r,c; int a[110][110]; int ans; void dfs(int x,int y) { int tx,ty,i,j; for(i=0;i<8;i++) { tx=x+dir[i][0]; ty=y+dir[i][1]; if(tx>=0&&tx<r&&ty>=0&&ty<c&&a[tx][ty]==1) { a[tx][ty]=0; dfs(tx,ty); } } } int main() { char s; int i,j; while(scanf("%d%d",&r,&c)!=EOF) { ans=0; if(r==0||c==0)break; memset(a,0,sizeof(a)); for(i=0;i<r;i++){ for(j=0;j<c;j++){ scanf(" %c",&s); if(s=='@') a[i][j]=1; else a[i][j]=0; } } /* for(i=0;i<r;i++) { for(j=0;j<c;j++) printf("%d ",a[i][j]); printf("\n"); }*/ for(i=0;i<r;i++) for(j=0;j<c;j++) { if(a[i][j]==1) { a[i][j]=0; dfs(i,j); ans++; } } printf("%d\n",ans); } return 0; }