#include<iostream>
#include<string.h>
#include<stdio.h>
#include<math.h>
#include<queue>
#include<algorithm>
#define N 101
using namespace std;
int map[N][N];
int dp[N][N];
bool inq[N][N];
int dir[2][4]={{0,0,1,-1},{1,-1,0,0}};
struct node
{
int x,y;
int num;
bool operator < (const node b) const
{
return b.num<num;
}
}a[N*N];
int main()
{
int r,c,i,j;
int cou=0;
int ans;
node u,v;
while(~scanf("%d%d",&r,&c))
{
cou=0;
memset(dp,0,sizeof(dp));
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
scanf("%d",&map[i][j]);
a[cou].x=i;
a[cou].y=j;
a[cou++].num=map[i][j];
}
sort(a,a+cou);
for(i=0;i<cou;i++)
{
u=a[i];
for(j=0;j<4;j++)
{
v.x=u.x+dir[0][j];
v.y=u.y+dir[1][j];
if(0<=v.x&&v.x<=r&&0<=v.y&&v.y<=c&&map[u.x][u.y]<map[v.x][v.y])
dp[u.x][u.y]=max(dp[u.x][u.y],dp[v.x][v.y]+1);
}
}
ans=0;
for(i=0;i<r;i++)
for(j=0;j<c;j++)
ans=max(ans,dp[i][j]);
printf("%d\n",ans+1);
}
}
poj1088
最新推荐文章于 2022-11-06 13:43:26 发布