poj 1562 Oil Deposits 广搜 (★☆☆☆☆)

题意:由相邻的‘@’所组成的区域称为一块油田,问一共有多少块这样的油田?

 

  • Source Code
    #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;
    }
  • posted @ 2011-05-09 11:05  Pengchao Bai  阅读(243)  评论(0编辑  收藏  举报