| ||||||||||
| 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 | |||||||||
请教,time为0ms的算法是怎样的我的方法#include "stdio.h"
int a[100][100];
int p[100][100];
int r,c;
int f(int m, int n);
int main()
{
int i,j,l=0,x=1,y=1;
scanf("%d%d",&r,&c);
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
scanf("%d",a[i]+j);
p[i][j]=0;
}
for(i=0;i<r;i++)
for(j=0;j<c;j++)
{
if(p[i][j]==0)
{
y=f(i,j);
if(x<y)
x=y;
}
}
printf("%d",x);
return 0;
}
int f(int m, int n)
{
int max=0;
if(p[m][n]>0)
return p[m][n];
if(n+1<c)
{
if(a[m][n]<a[m][n+1])
{
p[m][n+1]=f(m,n+1);
if(max<p[m][n+1])
max=p[m][n+1];
}
}
if(n-1>=0)
{
if(a[m][n]<a[m][n-1])
{
p[m][n-1]=f(m,n-1);
if(max<p[m][n-1])
max=p[m][n-1];
}
}
{
if(a[m][n]<a[m+1][n])
{
p[m+1][n]=f(m+1,n);
if(max<p[m+1][n])
max=p[m+1][n];
}
}
if(m-1>=0)
{
if(a[m][n]<a[m-1][n])
{
p[m-1][n]=f(m-1,n);
if(max<p[m-1][n])
max=p[m-1][n];
}
}
return p[m][n]=max+1;
}
虽然ac了但耗时较长
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator