90分求调
查看原帖
90分求调
1034698
jzy_CSPJ_AK楼主2024/10/2 18:31
#include<bits/stdc++.h>
using namespace std;
int y[1500][1500],x[150][150],r,c,maxn=-1;
int dfs(int i,int j,int cnt){
    if(y[i][j]!=0)return y[i][j];
    y[i][j]=1;
    if(x[i+1][j]<x[i][j]&&i>=1&&j>=1&&i<r&&j<=c){
        y[i][j]=max(y[i][j],dfs(i+1,j,cnt+1));
    }
    if(x[i][j+1]<x[i][j]&&i>=1&&j>=1&&i<=r&&j<c){
        y[i][j]=max(y[i][j],dfs(i,j+1,cnt+1));
    }
    if(x[i-1][j]<x[i][j]&&i>=2&&j>=1&&i<=r&&j<=c){
        y[i][j]=max(y[i][j],dfs(i-1,j,cnt+1));
    }
    if(x[i][j-1]<x[i][j]&&i>=1&&j>1&&i<=r&&j<=c){
        y[i][j]=max(y[i][j],dfs(i,j-1,cnt+1));
    }
    maxn=max(maxn,cnt);
}
int main(){
    cin>>r>>c;
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            cin>>x[i][j];
        }
    }
    for(int i=1;i<=r;i++){
        for(int j=1;j<=c;j++){
            
            dfs(i,j,1);
        }
    }
    cout<<maxn;
    return 0;
}
2024/10/2 18:31
加载中...