80分求助 #8#9WA
查看原帖
80分求助 #8#9WA
1137880
q472019579楼主2023/12/15 15:59
#include<bits/stdc++.h>
#define int long long
using namespace std;
int r,c,map1[105][105],val[105][105];
int ans,result;
void search(int h){
    int cnt1=0;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            int cnt=0;
            int atleast=0;//至少有一边符合条件
            if(i-1!=0){//上
                if(val[i-1][j]==h-1){
                    atleast++;
                }
                if(map1[i-1][j]>map1[i][j]||val[i-1][j]&&val[i-1][j]<h){
                    ;
                }
                else{
                    continue;
                }
            }
            if(j-1!=0){//左
                if(val[i][j-1]==h-1){
                    atleast++;
                }
                if(map1[i][j-1]>map1[i][j]||val[i][j-1]&&val[i][j-1]<h){
                    ;
                }
                else{
                    continue;
                }
            }
            if(i!=r){//下
                if(val[i+1][j]==h-1){
                    atleast++;
                }
                if(map1[i+1][j]>map1[i][j]||val[i+1][j]&&val[i+1][j]<h){
                    ;
                }
                else{
                    continue;
                }
            }
            if(j!=c){//右
                if(val[i][j+1]==h-1){
                    atleast++;
                }
                if(map1[i][j+1]>map1[i][j]||val[i][j+1]&&val[i][j+1]<h){
                    ;
                }
                else{
                    continue;
                }
            }
            if(val[i][j]==0&&atleast!=0){
                val[i][j]=h;
                //cout<<h<<i<<j<<endl;//TEST--------------
                cnt1++;
            }

        }
    }
    if(cnt1==0){
        cout<<h-1;
        exit(0);
    }
    search(h+1);
}
signed main(){
    cin>>r>>c;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            cin>>map1[i][j];
        }
    }
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            int cnt=0;
            if(i-1==0||map1[i-1][j]>map1[i][j]){
                cnt++;
            }
            if(j-1==0||map1[i][j-1]>map1[i][j]){
                cnt++;
            }
            if(i==r||map1[i+1][j]>map1[i][j]){
                cnt++;
            }
            if(j==c||map1[i][j+1]>map1[i][j]){
                cnt++;
            }
            if(cnt==4){
                val[i][j]=1;
            }

        }
    }
    search(2);
    return 0;
}
2023/12/15 15:59
加载中...