| 比赛 |
初一开训小练习 |
评测结果 |
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;
}