Oil Deposits

#include<cstring>
#include<stdio.h>
#include<iostream>
using namespace std;
char map[100][100];
int dir[][2]=
{
    -1,-1,
    -1,0,
    -1,1,
    1,1,
    1,0,
    1,-1,
    0,1,
    0,-1,
};
int vis[100][100];
int n,m,ans;
void DFS(int i,int j)
{
    vis[i][j]=1;
    for(int k=0;k<8;k++)
    {
        int dx=i+dir[k][0];
        int dy=j+dir[k][1];
        if(dx>=0&&dx<n&&dy>=0&&dy<m&&!vis[dx][dy]&&map[dx][dy]=='@')
            DFS(dx,dy);
    }
    return ;
}
int main()
{
    while(cin>>n>>m)
    {
        if(!n&&!m)break;
        for(int i=0;i<n;i++)
            scanf("%s",&map[i]);
        ans=0;
        memset(vis,0,sizeof(vis));
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
            if(!vis[i][j]&&map[i][j]=='@')
        {
            ans++;
            DFS(i,j);
        }
        printf("%d\n",ans);
    }
    return 0;
}

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