Pku acm 1088 滑雪 动态规划题目解题报告(十五)

http://acm.pku.edu.cn/JudgeOnline/problem?id=1088

1  2  3  4 5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一条可滑行的滑坡为24-17-16-1。当然25-24-23-...- 3-2-1 更长。事实上,这是最长的一条。输出最长区域的长度。

Opt[i][j]表示位置i j上最大的下降距离,如果其周围4个点存在高度比i j高,且opt没有ij 大的点,则opt[i][j]=opt[周围]+1;另外,这个问题中存在大量重复问题,应该将计算的结果存储起来,避免重复的计算。

关键部分的c代码为:

for(k=0;k<4;k++)

{

    if(isIn(i+dx[k],j+dy[k]) && heigth[i][j]<heigth[i+dx[k]][j+dy[k]])

    {

        int num = dp(i+dx[k],j+dy[k]);

        if(opt[i][j]<=num)

        {

            opt[i][j] = num+1;

        }

    }

}

其中const int dx[] = {0,0,-1,1},dy[] = {-1,1,0,0};表示一个点周围的4个点。带有详细注释的代码可以在http://download.csdn.net/user/china8848/获得 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值