oil deposits

题目:

https://vjudge.net/problem/HDU-1241

思路:

dfs

每碰到油库就八方向搜

代码:

#include<stdio.h>
#include<string.h>
int vis[103][103];
char si[103][103];
struct node
{
    int x,y;
};
int n,m;
int dx[9]={0,0,1,-1,1,-1,1,-1};
int dy[9]={1,-1,0,0,-1,1,1,-1};
void dfs(node s)
{
    vis[s.x][s.y]=1;
    int x=s.x;
    int y=s.y;
    for(int i=0;i<8;i++)
    {
        int tx=x+dx[i];
        int ty=y+dy[i];
        if(!vis[tx][ty]&&si[tx][ty]=='@'&&tx>=1&&tx<=n&&ty>=1&&ty<=m)
        {
            node nw;
            nw.x=tx;
            nw.y=ty;
            dfs(nw);
        }
    }
}
int main()
{
    while(1)
    {
        scanf("%d %d",&n,&m);
        if(n==0&&m==0)
            break;
            memset(vis,0,sizeof(vis));
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                scanf(" %1c",&si[i][j]);
            }
        }
        int ans=0;
        for(int i=1;i<=n;i++)
        {
            for(int j=1;j<=m;j++)
            {
                if(!vis[i][j]&&si[i][j]=='@')
                {
                    node s;
                    s.x=i;
                    s.y=j;

                    dfs(s);
                    ans++;
                }
            }
        }
        printf("%d\n",ans);
    }
}

 

posted @ 2021-07-10 15:34  废柴废柴少女  阅读(28)  评论(0)    收藏  举报