//传说中的入门题,啊啊啊,说明最近还是有长进的,边吃着外卖边码代码,外卖吃完代码也写好了,一次AC~~
//思路相当简单啊,就是记忆话搜索,有过这个值就记录下来,如果这个点没有访问过,则从这个点搜索。
#include <stdio.h>
#include <string.h>
int s[105][105];
int dp[105][105];
int r,c;
int max(int c,int d)
{
return c>d?c:d;
}
int huaxue(int x,int y)
{
int a[]={-1,1,0,0};
int b[]={0,0,1,-1};
int i,j,max1;
if (dp[x][y]>0)
return dp[x][y];
else
{
max1=1;
for (i=0;i<=3;i++)
for (j=0;j<=3;j++)
if ((x+a[i]>=0)&&(x+a[i]<r)&&(y+b[i]>=0)&&(y+b[i]<c)&&(s[x+a[i]][y+b[i]]<s[x][y]))
max1=max(max1,huaxue(x+a[i],y+b[i])+1);
dp[x][y]=max1;
return max1;
}
}
int main()
{
int i,j,max1;
scanf("%d%d",&r,&c);
memset(dp,0,sizeof(dp));
for (i=0;i<r;i++)
for (j=0;j<c;j++)
scanf("%d",&s[i][j]);
max1=-1;
for (i=0;i<r;i++)
for (j=0;j<c;j++)
max1=max(max1,huaxue(i,j));
printf("%d\n",max1);
return 0;
}
poj1088(dp入门题)
最新推荐文章于 2021-11-03 18:03:25 发布