关于求最值问题中显示其中间路径

回溯法与动态规划算法都可以解决有关最值的问题,然而,有些问题不止是要得到最值而已,有时还要知道是如何得到最值的。

然而二算法在处理该问题方法是不一样的。

在动态规划算法中,它是将问题划分为一个一个的子问题,与子问题相关的变量的一组取值,称之为一个“状态”,一个状态对应

于一个子问题,所谓“状态”下的值,即为该状态下子问题的解。我们则定义一数组(数组维数与状态个数相关)记录其子问题的

解。如何知道问题解的组成,则再定义一数组(维数为状态个数+1)用来记录每一个子问题解的组成。

例如,求最长子序列问题中,刚开始自是显示其子序列的长度,故只定义一个数组num[i]来表示其子序列长度。后来,要求输出其

子序列,因此在定义一数组num1[i][MAX]用来记录i状态下其子序列元素。

在用回溯法解决问题时,其是采用穷举法来寻找最值的。故如果要求输入其解的组成,必须是在递归的出口处需找。如何某一种情况

是解的话,则定义一标志数组将此时的情况记录下来。

例如背包问题,要求输出,是哪些物品放入包中时,是在递归出口,用数组将其记录下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值