HDU 1241 Oil Deposits

简单的dfs。。
不过要规定条件,不然会wa。。有点奇怪。。照理说走出map就没有@了。。
恩。。以后多多关注边界吧!

#include<stdio.h>
int n,m;
char map[110][110];
int move[8][2]={{1,0},{-1,0},{0,1},{0,-1},{1,1},{-1,-1},{-1,1},{1,-1}};
void dfs(int i,int j)
{
    for(int k=0;k<8;k++)
    {
        int newi=i+move[k][0];
        int newj=j+move[k][1];
        if(newi>=0&&newi<n&&newj>=0&&newj<m&&map[newi][newj]=='@')
        {
             map[newi][newj]='*';
             dfs(newi,newj);
        }
    }
}
int main()
{
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        if(n==0&&m==0)
            break;
        int i,j;
        int ans=0;
        for(i=0;i<n;i++)
            scanf("%s",map[i]);
        for(i=0;i<n;i++)
            for(j=0;j<m;j++)
            {
                if(map[i][j]=='@')
                {
                    ans++;
                    map[i][j]='*';
                    dfs(i,j);
                }
            }
        printf("%d\n",ans);
    }
    return 0;
}

你可能感兴趣的:(DFS)