题意 :求一块区域内有多少油田
简单dfs
#include<iostream> using namespace std; char map[102][102]; int use[102][102]; int m,n; int dir[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1}}; int go(int x,int y) { if(x>=0&&x<m&&y>=0&&y<n&&map[x][y]=='@') return 1; return 0; } void dfs(int x1,int y1) { int i; int xx,yy; use[x1][y1]=1; for(i=0;i<8;i++) { xx=x1+dir[i][0]; yy=y1+dir[i][1]; if(go(xx,yy)==1&&!use[xx][yy]==1) dfs(xx,yy); } return ; } int main() { int i,j,sum=0; while(cin>>m>>n&&m!=0&&n!=0) { sum=0; for(i=0;i<m;i++) for(j=0;j<n;j++) { cin>>map[i][j]; use[i][j]=0; } for(i=0;i<m;i++) for(j=0;j<n;j++) if(go(i,j)==1&&!use[i][j]==1) { dfs(i,j); sum++; } cout<<sum<<endl; } return 0; }