2014年1月22日

动态规划Dynamic Programming: Rod-Cutting Problem

摘要: 动态规划可求最优解问题,但有条件限制,每一层最优解可知。递归动态规划与分治思想有类似之处,但在递归基础上,用一张表存储计算过程中每一层的”最优解“,避免重复计算已经得出的计算结果。Rod-Cutting Problem问题描述:给你一根长n英尺的棒子和一份关于该棒子的价目表如下(其中i = 1,2,3,…,n),请问如何将这根棒子卖出最高的价格,可以对棒子进行切割。thinking path:从i=1 to 10进行枚举尝试,例如,砍1米开始砍,那么剩下的9米就会成为新的”问题“,进行递归。易得递推式:r(i)=max(p[i]+r(n-i)); n为rod总长根据递推式,写出递归伪代码:CU 阅读全文

posted @ 2014-01-22 17:08 Jam_01 阅读(1161) 评论(0) 推荐(0)

递归详解,全排列问题

摘要: 递归 Recursion关键词: 递归树(recursion tree)全排列问题问题描述:用C++写一个函数, 如 Foo(const char *str), 打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cbathinking path:进行全排列,对每种可能进行枚举,例如123,那么可以1与2互换,1与3互换,以及2与3互换。问题稍微扩展为1234,1分别与2,3,4互换。总结规律就是对某个数,与其后面的数一一进行互换,得出该数在该位置的所有可能。将该数向后“递进”一个位置,例如,1234,1与2互换后为,2134,再用同样的方法尝试 阅读全文

posted @ 2014-01-22 16:34 Jam_01 阅读(2353) 评论(0) 推荐(0)

导航