Algorithm 切削杆动态规划

Algorithm 切削杆动态规划,algorithm,Algorithm,给定一根长度为n英寸的杆和一组价格,其中包含所有尺寸小于n的杆的价格。利用动态规划可以得到最大值和相应的杆件。对于这个问题,是否有任何算法可以产生第k个最大值和相应的切割 问题:查找棒料切割问题的k th最高价格。 我认为可以通过以下方式调整算法: 将棒料切割问题中的递归更改为: cutRod(n) = max(price[i] + cutRod(n-i-1)) for all i in {0, 1 .. n-1} 致: 基本上,在每个递归步骤中,返回该子部分的maxk价格,因为只有这些价格最

给定一根长度为n英寸的杆和一组价格,其中包含所有尺寸小于n的杆的价格。利用动态规划可以得到最大值和相应的杆件。对于这个问题,是否有任何算法可以产生第k个最大值和相应的切割

问题:查找棒料切割问题的
k th
最高价格。

我认为可以通过以下方式调整算法:

将棒料切割问题中的递归更改为:

cutRod(n) = max(price[i] + cutRod(n-i-1)) for all i in {0, 1 .. n-1}
致:

基本上,在每个递归步骤中,返回该子部分的max
k
价格,因为只有这些价格最终可以是总体max
k

Bruteforce方法是返回该子部分的所有可能价格,但我们可以肯定的是,对于该子部分,排名大于
k
的价格最终不能位于完整棒的顶部
k
价格中

因此这里的
Top\u K\u Price\u CutRod(n)[
是该子部分的
K
最大价格数组。 在递归的根,您将得到max top
k
prices


我不认为我们可以优化更多,因为在每个递归节点上,它的top k值可以在最终的top k中。因此,必须为所有子部分设置顶部
k

问题:查找棒料切割问题的
k th
最高价格。

我认为可以通过以下方式调整算法:

将棒料切割问题中的递归更改为:

cutRod(n) = max(price[i] + cutRod(n-i-1)) for all i in {0, 1 .. n-1}
致:

基本上,在每个递归步骤中,返回该子部分的max
k
价格,因为只有这些价格最终可以是总体max
k

Bruteforce方法是返回该子部分的所有可能价格,但我们可以肯定的是,对于该子部分,排名大于
k
的价格最终不能位于完整棒的顶部
k
价格中

因此这里的
Top\u K\u Price\u CutRod(n)[
是该子部分的
K
最大价格数组。 在递归的根,您将得到max top
k
prices


我不认为我们可以优化更多,因为在每个递归节点上,它的top k值可以在最终的top k中。因此,必须为所有子部分设置顶部
k

@ilim杆切割问题的可能重复给出了最大值以及相应的杆拆分。我的问题是如何得到第二,第三,第四。。。根据我的理解,可以修改算法,使用多个数组作为解的值,即一个用于最优值,一个用于次优值,等等。这些阵列必须沿最佳阵列填充。可能重复的@ilim棒切割问题会在相应的棒分裂中给出最大值。我的问题是如何得到第二,第三,第四。。。根据我的理解,可以修改算法,使用多个数组作为解的值,即一个用于最优值,一个用于次优值,等等。这些数组必须沿最佳数组填充。