• 我爱崔老师系列之 POJ 1088 滑雪 DFS+记忆化搜索~


    题目连接http://poj.org/problem?id=1088

    这道题其实说实话知道了思路真的很简单,但是那天晚上做的时候很苦逼的错了好多地方然后查还没查出来= =。。。

    表示DFS真的很吃力= =。。。

    所谓的记忆化搜索现在看来就是吧上搜索过的给存起来。。。

    需要一个状态方程

    dp[i][j] = max(dp[i+1][j],dp[i-1][j],dp[i][j+1],dp[i][j-1]);

    四个方向搜一遍找到最合适的即可。。。

    代码

    View Code
     1 #include <string.h>
     2 #include <stdio.h>
     3 int num[105][105];
     4 int map[105][105];
     5 int c,r;
     6 int dfs(int i,int j)
     7 {
     8     int max = 0;
     9     if(num[i][j])
    10     return num[i][j];
    11     if(i+1 <= r && map[i][j] > map[i+1][j])
    12     {
    13         if(!num[i+1][j])
    14         num[i+1][j] = dfs(i+1,j);
    15         if(max < num[i+1][j])
    16         max = num[i+1][j];
    17     }
    18     if(i-1 > 0 && map[i][j] > map[i-1][j])
    19     {
    20         if(!num[i-1][j])
    21         num[i-1][j] = dfs(i-1,j);
    22         if(max < num[i-1][j])
    23         max = num[i-1][j];
    24     }
    25     if(j+1 <= c && map[i][j] > map[i][j+1])
    26     {
    27         if(!num[i][j+1])
    28         num[i][j+1] = dfs(i,j+1);
    29         if(max < num[i][j+1])
    30         max = num[i][j+1];
    31     }
    32     if(j-1 > 0 && map[i][j] > map[i][j-1])
    33     {
    34         if(!num[i][j-1])
    35         num[i][j-1] = dfs(i,j-1);
    36         if(max < num[i][j-1])
    37         max = num[i][j-1];
    38     }
    39     return max+1;
    40 }
    41 int main()
    42 {
    43     int i,j,n;
    44     scanf("%d %d",&r,&c);
    45     for(i = 1;i <= r;i++)
    46         for(j = 1;j <= c;j++)
    47         scanf("%d",&map[i][j]);
    48 
    49     memset(num,0,sizeof(num));
    50     for(i = 1;i <= r;i++)
    51     {
    52         for(j = 1;j <= c;j++)
    53         num[i][j] = dfs(i,j);
    54     }
    55 
    56     int max,ans;
    57     max = num[1][1];
    58     for(i =1;i <= r;i++)
    59     {
    60     for(j = 1;j <= c;j++)
    61     {
    62         if(max < num[i][j])
    63         max = num[i][j];
    64     }
    65     }
    66 
    67     printf("%d\n",max);
    68 
    69 }
  • 相关阅读:
    封装aixos拦截器
    vue路由传参的三种基本方式
    vue里的路由钩子
    箭头函数特点
    webstorm激活码
    vue-cli2使用less
    vue-cli2使用rem适配
    XfZGkvBaeh
    python解析excel中图片+提取图片
    python解析谷歌在线表格链接,转化为数组形式,图片转化为链接
  • 原文地址:https://www.cnblogs.com/0803yijia/p/2649653.html
Copyright © 2020-2023  润新知