首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自上而下切杆动态规划

自上而下切杆动态规划
EN

Stack Overflow用户
提问于 2018-04-26 04:04:20
回答 1查看 639关注 0票数 0

您将如何使用自上而下的方法来解决杆切割问题,使其返回长度为0的杆的所有最大成本的列表-杆长度,并返回用于实现该最大成本的零件?我已经成功地实现了自下而上的方法。

代码语言:javascript
复制
def cutRod(pricelist):
    length = len(pricelist)
    r = [0] * length
    s = [0] * length

    for j in range(1, length):
        maxVal = 0
        for i in range(1, j + 1):
            if maxVal < pricelist[i] + r[j - i]:
                maxVal = pricelist[i] + r[j - i]
                if pricelist[j - i] != 0:
                    s[j] = [i, j - i]
                else:
                    s[j] = [i]
        r[j] = maxVal
    return r,s

但是使用自上而下的方法,这就是我所得到的

代码语言:javascript
复制
def cutRod(pricelist, cost, parts):
    length = len(pricelist)

    if length <= 0:
        return [0, cost, parts]

    maxVal = 0

    for i in range(0, length):
        w = pricelist[i]
        x, cost, parts = cutRod(pricelist[:length - i - 1], cost, parts)
        if maxVal < x + w:
            maxVal = x + w

    return [maxVal, cost, parts]

到目前为止,此函数仅返回与列表大小相同长度的杆的最大成本。

EN

回答 1

Stack Overflow用户

发布于 2018-12-18 00:05:13

代码语言:javascript
复制
public static int cutRod(int arr[],int n,Integer memo[]){
    if(n<=0)
    return 0;
    int max=Integer.MIN_VALUE;
    if(memo[n]!=null)
    return memo[n];
    else{
        for(int i=0;i<n;i++)
        {
            max=Math.max(max,arr[i]+cutRod(arr,n-i-1,memo));
        }
        memo[n]=max;
        return memo[n];
    }
}

这是java中自顶向下的解决方案!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50030483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档