Oil Deposits 简单搜索 DFS()
0122 #include<cstdio>using namespace std;char map[1001][1001];int a,b;int dir[8][2]={ {1,0}, {1,1}, {1,-1}, {0,-1}, {0,1}, {-1,0}, {-1,1}, {-1,-1}};void DFS(int c,int d){ map[c][d]='*'; for(int k=0; k<8; k++) { int i=c+dir[k][0]; int j=d+dir[k][1]; if(i>=0&&i<a&&j>=0&&j<b&&map[i][j]=='@') DFS(i,j); }}int main(){ while(scanf("%d%d",&a,&b)!=EOF) { int sum=0; if(a==0&&b==0) break; getchar(); for(int i=0; i<a; i++) scanf("%s",map[i]); for(int i=0; i<a; i++) { for(int j=0; j<b; j++) if(map[i][j]=='@') { sum++; DFS(i,j); } } printf("%d\n",sum); } return 0;}