1 条题解

  • 0
    @ 2022-12-9 7:53:48
    #include <bits/stdc++.h>
    using namespace std;
    int w , h , b[1005][85] , ans , sum , next[4][2] = {{1 , 0} , 
                                                        {0 , 1} , 
                                                        {-1 , 0} , 
                                                        {0 , -1}};//也就写了亿遍
    char f[1005][85];
    void dfs(int x , int y)//基础深搜
    {
        for (int i = 0 ; i < 4 ; i++)
        {
            int tx = x + next[i][0] , ty = y + next[i][1];
            if (tx >= 1 && tx <= h && ty >= 1 && ty <= w && f[tx][ty] == '*' && b[tx][ty] == 0)
            {
                b[tx][ty] = 1;
                sum++;
                dfs(tx , ty);
            }
        }
        return;
    }
    
    int main()
    {
        cin >> w >> h;
        for (int i = 1 ; i <= h ; i++)
        {
            for (int j = 1 ; j <= w ; j++)
            {
                cin >> f[i][j];
            }
        }
    
        for (int i = 1 ; i <= h ; i++)
        {
            for (int j = 1 ; j <= w ; j++)
            {
                if (b[i][j] == 0 && f[i][j] == '*')
                {
                    sum = 1;//注意初始化
                    b[i][j] = 1;
                    dfs(i , j);
                    ans = max(ans , sum);
                }
            }
        }
        cout << ans;
        return 0;
    }//已AC
    
    • 1

    【入门】卫星照片 USACO 2005 NOV

    信息

    ID
    1109
    时间
    1000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    49
    已通过
    18
    上传者