习题9-1(最长滑雪路径)【深搜dfs】+【记忆化搜索】

习题9-1

【UVa 10285】longest Run on a Snowboard(最长滑雪路径)

题目大意:

在一个R*C(R,C<=100)的整数矩阵上找一条高度严格递减的最长路。起点任意,但每次只能沿着上下左右4个方向之一走一格,并且不能走出矩阵外。如图所示,最长路就是按照高度25,24,23,…,2,1这样走,长度为25。矩阵中的数均为0~100.
图:

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

思路:

可以看到样例中的最长路就是顺时针螺旋向中心前进,这个过程应该很容易在脑海里模拟吧,于是我们现在可以推出一个深搜的过程(即假设每个整数为一个节点,从各个节点出发,向着每个相对于自身小的方向尽可能深入地搜索),访问过某个节点后,进行记忆化操作(即使用向下节点的最值返回值更新设置的f数组,使脱离未访问状态,同时也是记录结果),之后再次访问时可直接调用此数组对应下标的值,避免重复访问(此处应满足无后效性),这样一直到以最后一个节点为起点搜索完,循环遍历一遍f数组,得到的最大值即为答案。

tips:在

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值