63分,不明白为啥,求大佬帮忙改改
查看原帖
63分,不明白为啥,求大佬帮忙改改
583126
CKAO楼主2022/3/3 20:32

minn 答案周长 maxn 答案面积 S 当前冰淇淋块的面积 C 当前冰淇淋的周长

#include<iostream>
#include<algorithm>
using namespace std;
const int N=1010;
char a[N][N];
bool st[N][N];
int n,S=0,C=0;
int dx[4]={0,1,0,-1},dy[4]={1,0,-1,0};
void dfs(int x,int y)
{
    a[x][y]='.';
    st[x][y]=true;
    S++;
    for (int i=0;i<4;i++)
    {
        int xx=x+dx[i],yy=y+dy[i];
        if (xx<0||xx>=n||y<0||yy>=n)
        {
            C++;
            continue;
        }
        if (a[xx][yy]=='.')
        {
            if (!st[xx][yy])
                C++;
            continue;
        }
        dfs(xx,yy);
    }
}
int main()
{
    cin>>n;
    int maxn=-N,minn=N;
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
            cin>>a[i][j];
            
    for (int i=0;i<n;i++)
        for (int j=0;j<n;j++)
        {
            if (a[i][j]=='#')
            {
                dfs(i,j);
                if (S==maxn)
                    minn=min(C,minn);
                else
                {
                    if (S>maxn)
                        maxn=S,minn=C;
                }
                S=0,C=0;
            }
        }
        
    cout<<maxn<<' '<<minn;
    return 0;
}
2022/3/3 20:32
加载中...