r******j 发帖数: 92 | 1 关于dp的top down和bottom up。一般我都是先从top down的recursion开始考虑,然后
找出重复计算的地方,如果用memorization的话,直接存一下,以后再查就好了。如果
这样考虑的时候,我们存的一般都是尾巴上的结果,然后一点一点的递归到头,就有结
果了。可是我们bottom up的时候是从头一点一点的到尾巴。感觉这是两种不同的思路
啊。也就是说,是不是所有能用top down解的dp问题都能用bottom up解呢?我发现我
做的题好像都是呢。如果是的话,为什么呢? |
f*********g 发帖数: 110 | 2 本身就是同一个问题,当然top down 和bottom up都可以了,就像一个人走楼梯,从上
走到下,和从下走到上,都是完成了走一遍楼梯的任务一样。 |
r******j 发帖数: 92 | 3 但是应该有题只能从前往后走,有题只能从后往前走吧。
【在 f*********g 的大作中提到】 : 本身就是同一个问题,当然top down 和bottom up都可以了,就像一个人走楼梯,从上 : 走到下,和从下走到上,都是完成了走一遍楼梯的任务一样。
|
S******1 发帖数: 216 | 4 感觉有些听一眼都能看出来的直接就bottom up了, 不是那么同意但感觉能dp的就用
recursion + cache |
y***n 发帖数: 1594 | 5 recursion + cache 也是我的体会,但是碰到没有看到的题还是不那么容易的。 |
S******1 发帖数: 216 | 6
记得当年某人用recursive + cache推出了pretty print的dp, 直接shock了
【在 y***n 的大作中提到】 : recursion + cache 也是我的体会,但是碰到没有看到的题还是不那么容易的。
|
a*********0 发帖数: 2727 | 7 递归也是从头开始啊,你要递归到最里层才会有结果可存
【在 r******j 的大作中提到】 : 关于dp的top down和bottom up。一般我都是先从top down的recursion开始考虑,然后 : 找出重复计算的地方,如果用memorization的话,直接存一下,以后再查就好了。如果 : 这样考虑的时候,我们存的一般都是尾巴上的结果,然后一点一点的递归到头,就有结 : 果了。可是我们bottom up的时候是从头一点一点的到尾巴。感觉这是两种不同的思路 : 啊。也就是说,是不是所有能用top down解的dp问题都能用bottom up解呢?我发现我 : 做的题好像都是呢。如果是的话,为什么呢?
|
r******j 发帖数: 92 | 8 是
我的意思是说,递归的最里层往往是最后一个要处理的字符或者数字,所以如果直接把
这个递归转成非递归的话,理论上我们也要从这最后一个字符或者数字出发,向头的方
向走。但是,我们一般做的bottom up的递归,却实际上是从第一个往最后一个走。两
者走的方向不同。根据递归的解法,我能明白从后往前走,但是为什么从前往后走的
bottom up也可以呢?
【在 a*********0 的大作中提到】 : 递归也是从头开始啊,你要递归到最里层才会有结果可存
|
f*********g 发帖数: 110 | 9 同意absolute100, 不明白楼主在纠结什么 |
l*******g 发帖数: 82 | 10 dp是啥的缩写?
关于dp的top down和bottom up。一般我都是先从top down的recursion开始考虑,然后
找出重复计算的地方,如果用memorization的话,直接存一........
【在 r******j 的大作中提到】 : 关于dp的top down和bottom up。一般我都是先从top down的recursion开始考虑,然后 : 找出重复计算的地方,如果用memorization的话,直接存一下,以后再查就好了。如果 : 这样考虑的时候,我们存的一般都是尾巴上的结果,然后一点一点的递归到头,就有结 : 果了。可是我们bottom up的时候是从头一点一点的到尾巴。感觉这是两种不同的思路 : 啊。也就是说,是不是所有能用top down解的dp问题都能用bottom up解呢?我发现我 : 做的题好像都是呢。如果是的话,为什么呢?
|