Oil Deposits(深搜)

问题描述:
GeoSurvComp地质调查公司负责检测地下油藏.GeoSurvComp一次与一个大的矩形区域一起工作,并创建一个网格,将网格划分为多个方块.然后分别分析每个地块,使用传感设备确定该地块是否含有油.含油的情节被称为口袋.如果两个口袋相邻,则它们是同一个油藏的一部分.油藏可能相当大,可能含有大量的口袋.你的工作是确定网格中包含多少个不同的油藏.
输入:
输入文件包含一个或多个网格.每个网格以含有m和n的行开始,网格中的行和列的数量由一个空格分隔.如果m=0,则表示输入结束;否则1<=m<=100且1<=n<=100。之后是每行n个字符的m行(不包括行尾字符)。每个字符对应一个图,并且代表没有油的‘*’或代表油袋的‘@’.

输出:
对于每个电网,输出不同油量的数量.如果两个不同的口袋是水平,垂直或对角相邻的,则它们是同一个油藏的一部分.一个油藏不会超过100个口袋.

需将油藏附近的油藏替换掉。

#include
using namespace std;
int n,m;
char mapp[101][101];
int dir[8][2]={{1,0},{1,1},{0,1},{-1,1},{-1,0},{-1,-1},{0,-1},{1,-1}};
void dfs(int x,int y){
if(mapp[x][y]=='@')
    mapp[x][y]='*';
for(int i=0;i<8;i++){
     int a=dir[i][0]+x;
     int b=dir[i][1]+y;
     if(mapp[a][b]=='@'&&a=0&&b=0)
        dfs(a,b);
}
}
int main(){
while(scanf("%d %d",&n,&m)&&n!=0&&m!=0){
    int sum=0;
    getchar();
    for(int i=0;i

你可能感兴趣的:(Oil Deposits(深搜))