poj 1562 Oil Deposits 广搜 (★☆☆☆☆)
题意:由相邻的‘@’所组成的区域称为一块油田,问一共有多少块这样的油田?
#include <iostream> using namespace std; const int N = 110; char g[N][N]; int n,m; int r[8][2]={{0,-1},{0,1},{-1,0},{1,0},{-1,-1},{1,1},{-1,1},{1,-1}}; void bfs(int x, int y){ for(int i=0;i<8;i++){ if(x+r[i][0]>=0 && x+r[i][0]<n && y+r[i][1]>=0 && y+r[i][1]<m && g[x+r[i][0]][y+r[i][1]]=='@'){ g[x+r[i][0]][y+r[i][1]]='*'; bfs(x+r[i][0],y+r[i][1]); } } } int main(){ while(cin>>n>>m,n||m){ for(int i=0;i<n;i++){ cin>>g[i]; } int ans = 0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(g[i][j]=='@'){ ans++; g[i][j]='*'; bfs(i,j); } } } cout<<ans<<endl; } return 0; }