Algorithm 切削杆动态规划
给定一根长度为n英寸的杆和一组价格,其中包含所有尺寸小于n的杆的价格。利用动态规划可以得到最大值和相应的杆件。对于这个问题,是否有任何算法可以产生第k个最大值和相应的切割 问题:查找棒料切割问题的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价格,因为只有这些价格最
k th
最高价格。
我认为可以通过以下方式调整算法:
将棒料切割问题中的递归更改为:
cutRod(n) = max(price[i] + cutRod(n-i-1)) for all i in {0, 1 .. n-1}
致:
基本上,在每个递归步骤中,返回该子部分的maxk
价格,因为只有这些价格最终可以是总体maxk
Bruteforce方法是返回该子部分的所有可能价格,但我们可以肯定的是,对于该子部分,排名大于k
的价格最终不能位于完整棒的顶部k
价格中
因此这里的Top\u K\u Price\u CutRod(n)[
是该子部分的K
最大价格数组。
在递归的根,您将得到max topk
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}
致:
基本上,在每个递归步骤中,返回该子部分的maxk
价格,因为只有这些价格最终可以是总体maxk
Bruteforce方法是返回该子部分的所有可能价格,但我们可以肯定的是,对于该子部分,排名大于k
的价格最终不能位于完整棒的顶部k
价格中
因此这里的Top\u K\u Price\u CutRod(n)[
是该子部分的K
最大价格数组。
在递归的根,您将得到max topk
prices
我不认为我们可以优化更多,因为在每个递归节点上,它的top k值可以在最终的top k中。因此,必须为所有子部分设置顶部
k
值 @ilim杆切割问题的可能重复给出了最大值以及相应的杆拆分。我的问题是如何得到第二,第三,第四。。。根据我的理解,可以修改算法,使用多个数组作为解的值,即一个用于最优值,一个用于次优值,等等。这些阵列必须沿最佳阵列填充。可能重复的@ilim棒切割问题会在相应的棒分裂中给出最大值。我的问题是如何得到第二,第三,第四。。。根据我的理解,可以修改算法,使用多个数组作为解的值,即一个用于最优值,一个用于次优值,等等。这些数组必须沿最佳数组填充。