求条,10pts
查看原帖
求条,10pts
1282396
AlexanderQ楼主2025/7/3 09:33
#include<bits/stdc++.h>
using namespace std;
int dx[5]={0,1,-1,0,0,};
int dy[5]={0,0,0,1,-1};
int main(){
    int n,m;
    cin>>n>>m;
    int a[1005][1005];
    int b[1005][1005];
    int c[1005][1005];
    memset(b,5,sizeof(b));
    memset(a,1,sizeof(a));
    char aa;
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            cin>>aa;
            if(aa=='.'){
                a[i][j]=0;
                c[i][i]=0;
            }else{
                a[i][j]=1;
                c[i][j]=1;
            }
        }
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            for(int d=1;d<=4;++d){
                if(a[i+dx[d]][j+dy[d]]==1){
                    b[i][j]++;
                }
            }
        }
    }
    int mx=0;
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            if(a[i][j]==1){
                mx=max(mx,b[i][j]);
            }
        }
    }
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            if(a[i][j]==1&&b[i][j]==mx){
                a[i][j]--;
                break;
            }
        }
    }
    int ans=0;
    for(int i=1;i<=n;++i){
        for(int j=1;j<=m;++j){
            int flag=0;
            for(int d=1;d<=4;++d){
                if(a[i+dx[d]][j+dy[d]]==1||a[i][j]){
                    flag++;
                }
            }
            if(!flag){
                c[i][j]=2;
                ans++;
            }
        }
    }
    cout<<ans;
}
2025/7/3 09:33
加载中...