//为这题……整个人烦到极顶…… #include<iostream> using namespace std; int map[101][101]; int dp[101][101];//dp[i][j]表示从i j 出发能够到达的最大长度 int m,n; int dir[4][2]={{-1,0},{1,0},{0,-1},{0,1}}; int dfs(int si,int sj) { int k,vi,vj,mt,temp; if(dp[si][sj] > 0) return dp[si][sj]; mt=0; for(k=0;k<4;k++) { vi=si+dir[k][0]; vj=sj+dir[k][1]; if(vi>=1 && vi<=m && vj>=1 && vj<=n ) { if(map[vi][vj] > map[si][sj] ) { temp = dfs(vi,vj); if(temp > mt) mt = temp; } } }//for(k=0;k<4;k++) dp[si][sj] = mt+1; return mt+1; }
int main() { while(cin>>m>>n) { int i,j; for(i=1;i<=m;i++) for(j=1;j<=n;j++) { scanf("%d",&map[i][j]); dp[i][j] = 0; } for(i=1;i<=m;i++) for(j=1;j<=n;j++) dfs(i,j); int M=0; for(i=1;i<=m;i++) for(j=1;j<=n;j++) if(dp[i][j] > M) M = dp[i][j]; cout<<M<<endl; } return 0; }
http://acm.pku.edu.cn/JudgeOnline/problem?id=1088
|
|
|
公告
导航
统计
- 随笔: 84
- 文章: 7
- 评论: 49
- 引用: 0
常用链接
留言簿(6)
随笔分类
随笔档案
文章分类
文章档案
相册
百事百通
搜索
积分与排名
最新评论
阅读排行榜
评论排行榜
|
|