| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
为什么好像没有ls写的那么复杂。。。水过了#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#define N 105
#define max(a,b) (a)>(b)?(a):(b)
using namespace std;
int dp[N][N]={0},ans=0,n,m;
int DP(int a[][N],int i,int j)
{
int k,f[4][2]={{1,0},{0,1},{0,-1},{-1,0}};
if(dp[i][j]!=1)
return dp[i][j];
else
{
for(k=0;k<4;k++)
{
if(j+f[k][1]>=0&&i+f[k][0]>=0&&i+f[k][0]<n&&j+f[k][1]<m&&a[i][j]<a[i+f[k][0]][j+f[k][1]])
{
dp[i][j]=max(dp[i][j],DP(a,i+f[k][0],j+f[k][1])+1);
}
}
ans=max(ans,dp[i][j]);
return dp[i][j];
}
}
int main()
{
int i,j,a[N][N],x,y,min=0x7fffffff;
scanf("%d%d",&n,&m);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
for( i=0;i<n;i++)
for( j=0;j<m;j++)
{
dp[i][j]=1;
}
for( i=0;i<n;i++)
for( j=0;j<m;j++)
{
DP(a,i,j);
}
if(n==1&&m==1)
{
ans=1;
}
printf("%d\n",ans);
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator