Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
193031 | zjx1015 | 滑雪 | C++ | 通过 | 100 | 0 MS | 280 KB | 705 | 2025-05-05 17:36:12 |
#include<bits/stdc++.h> using namespace std; int r,c; int a[105][105]; int dp[105][105]; int dx[4]={1,0,-1,0}; int dy[4]={0,1,0,-1}; int dfs(int x,int y){ if(dp[x][y]!=0)return dp[x][y]; int max_len=1; for(int i=0;i<4;i++){ int nx=x+dx[i]; int ny=y+dy[i]; if(nx>0&&ny>0&&nx<=r&&ny<=c&&a[nx][ny]<a[x][y]){ int temp=dfs(nx,ny)+1; max_len=max(max_len,temp); } } dp[x][y]=max_len; return max_len; } int main(){ scanf("%d%d",&r,&c); for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) scanf("%d",&a[i][j]); int ans=1; for(int i=1;i<=r;i++) for(int j=1;j<=c;j++) ans=max(ans,dfs(i,j)); printf("%d",ans); return 0; }