比赛 初一开训小练习 评测结果 AAAAAAAAAA
题目名称 最长滑坡 最终得分 100
用户昵称 golden_w 运行时间 0.417 s
代码语言 C++ 内存使用 4.90 MiB
提交时间 2026-03-10 20:38:14
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int R,C;
int g[550][550];
int mem[550][550];
int dx[4]={0,1,-1,0};
int dy[4]={1,0,0,-1};
int dfs(int x,int y){
    if(mem[x][y]){
        return mem[x][y];
    }
    int max_len=1;
    for(int i=0;i<4;i++){
        int tx=x+dx[i];
        int ty=y+dy[i];
        if(tx>=0&&tx<R&&ty>=0&&ty<C&&g[tx][ty]<g[x][y]){
            max_len=max(max_len,dfs(tx,ty)+1);
        }
    }
    return mem[x][y]=max_len;
}
int main(){
    freopen("shunzhi.in","r",stdin);
    freopen("shunzhi.out","w",stdout);
    cin>>R>>C;
    for(int i=0;i<R;i++){
        for(int j=0;j<C;j++){
            cin>>g[i][j];
        }
    }
    int ans=0;
    for(int i=0;i<R;i++){
        for(int j=0;j<C;j++){
            ans=max(ans,dfs(i,j));
        }
    }
    cout<<ans<<endl;
    return 0;
}