1 solutions

  • 0
    @ 2024-8-3 14:37:15

    包对的

    #include<bits/stdc++.h>
    using namespace std;
    const int N=25,M=25;
    bool st[N][M];
    char g[N][M];
    int dx[]={-1,1,0,0};
    int dy[]={0,0,-1,1};
    int n,m;
    int cnt=0;
    void dfs(int x,int y)
    {
        for(int i=0;i<4;i++)
        {
            int a=x+dx[i],b=y+dy[i];
            if(a<0||a>=n||b<0||b>=m)
            {
                continue;
            }
            if(st[a][b])
            {
                continue;
            }
            if(g[a][b]=='#')
            {
                continue;
            }
            st[a][b]=1;
            cnt++;
            dfs(a,b);
        }
    }
    int main()
    {
        while(cin>>m>>n,m||n)
        {
            memset(st,0,sizeof st);
            cnt=0;
            for(int i=0;i<n;i++)
            {
                cin>>g[i];
            }
            int sx,sy;
            for(int i=0;i<n;i++)
            {
                for(int j=0;j<m;j++)
                {
                    if(g[i][j]=='@')
                    {
                        sx=i,sy=j;
                    }
                }
            }
            st[sx][sy]=1;
            cnt=1;
            dfs(sx,sy);
            cout<<cnt<<endl;
        }
        return 0;
    }
    
    • 1

    Information

    ID
    1009
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    3
    Tags
    (None)
    # Submissions
    54
    Accepted
    7
    Uploaded By