1 条题解

  • 0
    @ 2023-06-28 16:46:33
    //这题我强烈怀疑是题目的问题,一样的代码,一样的题目
    //为啥space能过,这题过不了???
    #include<bits/stdc++.h>
    using namespace std;
    int n,a[1005][1005],s=1,ans[50],t,k,sum;
    bool vis[1005][1005];
    int dir[4][2]={{0,1},{1,0},{-1,0},{0,-1}};
    void dfs(int x,int y)
    {
        int i,nx,ny;
        vis[x][y]=1;
        for(int i=0;i<4;i++)
        {
            nx=x+dir[i][0];
            ny=y+dir[i][1];
            if(a[nx][ny]&&!vis[nx][ny])
            {
                s++;
                dfs(nx,ny);
            }
        }
    }
    int main()
    {
        cin>>n>>k;
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
            {
                char c;
                cin>>c;
                if(c=='*')
                    a[i][j]=1;
                else
                    a[i][j]=0;
            }
        for(int i=1;i<=n;i++)
            for(int j=1;j<=n;j++)
                if(a[i][j]&&!vis[i][j])
                {
                    dfs(i,j);
                    ans[++t]=s;
                    s=1;
                }
        sort(ans+1,ans+t+1);
        t-=k;
        for(int i=1;i<=t;i++)
            sum+=ans[i];
        cout<<sum<<endl;
        return 0;
    }
    
  • 1

信息

ID
1610
难度
10
分类
(无)
标签
递交数
10
已通过
0
通过率
0%
被复制
3
上传者