//为这题……整个人烦到极顶……
#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)
随笔分类
随笔档案
文章分类
文章档案
相册
百事百通
搜索
积分与排名
最新评论

阅读排行榜
评论排行榜
|
|