POJ 1088 滑雪

来源:互联网 发布:三星s7edge主题软件 编辑:程序博客网 时间:2024/05/22 03:14

回溯思想。。要记忆化搜索。

#include<stdio.h>#include<string.h>int a[105][105],dp[105][105];int dfs(int x,int y){    if(dp[x][y]>1) return dp[x][y];//如果之前计算过了,直接返回这个计算过的值    int Q,W,E,R,MAX=1;    if(a[x][y]>a[x-1][y])        {Q=dfs(x-1,y)+1;if(MAX<Q)MAX=Q;}    if(a[x][y]>a[x+1][y])        {W=dfs(x+1,y)+1;if(MAX<W)MAX=W;}    if(a[x][y]>a[x][y-1])        {E=dfs(x,y-1)+1;if(MAX<E)MAX=E;}    if(a[x][y]>a[x][y+1])        {R=dfs(x,y+1)+1;if(MAX<R)MAX=R;}    return MAX;}int main(){    int r,c;    while(~scanf("%d%d",&r,&c))    {        memset(a,1,sizeof(a));//把边界设为无穷大        int i,j,p=0;        for(i=1;i<=r;i++)            for(j=1;j<=c;j++)            {                dp[i][j]=1;                scanf("%d",&a[i][j]);            }        for(i=1;i<=r;i++)            for(j=1;j<=c;j++)            {                dp[i][j]=dfs(i,j);                if(dp[i][j]>p)                    p=dp[i][j];            }        printf("%d\n",p);    }    return 0;}


 

0 0
原创粉丝点击