poj -- 1088 滑雪 【简单深搜】

来源:互联网 发布:晋中干部网络培训平台 编辑:程序博客网 时间:2024/06/15 02:16

传送门
//思路 : 本菜鸡的思路是从一个点进行记忆化搜索, 可以走的地方就走. 并判断是否记忆化过, 是的话直接返回当前这个点可以到达的最大深度.
dp[i][j] 就是代表从(i,j)这个点可以到达的最大深度.
AC Code

/** @Cain*/const int maxn=1e2+5;int dp[maxn][maxn],h[maxn][maxn];int n,m;int dfs(int x,int y){    if(dp[x][y] > 1) return dp[x][y];   //dp[i][j] 是记忆化搜索    int ans = 1;    if(h[x][y] > h[x][y-1] && y-1>0) ans = max(ans,dfs(x,y-1)+1);    if(h[x][y] > h[x-1][y] && x-1>0) ans = max(ans,dfs(x-1,y)+1);    if(h[x][y] > h[x][y+1] && y+1<=m) ans = max(ans,dfs(x,y+1)+1);    if(h[x][y] > h[x+1][y] && x+1<=n) ans = max(ans,dfs(x+1,y)+1);    return ans;}void solve(){    scanf("%d%d",&n,&m);    for(int i=1;i<=n;i++){        for(int j=1;j<=m;j++){            scanf("%d",&h[i][j]);        }    }    int res = 0;    for(int i=1;i<=n;i++){        for(int j=1;j<=m;j++){            dp[i][j] = dfs(i,j);            res = max(res,dp[i][j]);        }    }    printf("%d\n",res);}
原创粉丝点击