棒切割问题
给定一根长度为n英寸的棒和一个包含所有小于n的工件的表。通过切割棒并工件来确定可获得的最大值。例如,如果杆的长度为8,不同的杆件的值如下所示,则可获得的
解答动态
1 2 3 4 5 6 7 8------------------------------------
1 5 8 9 10 17 20 ,如果如下所示,则可获得的最大值为24(通过切割八段长度1)
长度1 2 3 4 5 6 7 8------------------------------------
3 5 8 9 10 17 20 输入将在本节中给出形式:将按升序排列,索引从1到n用空格隔开长度1}{长度2}的。。。。{price of length N}
输出应该是可获得的最大值
{maxVal}
对此的非Golfed解决方案,在Python中是:
INT\u MIN=-32767def cutRod(price,N):val=[0对于范围内的x(N+1)]val[0]=0对于范围内的i(1,N+1):max\u val=INT\u MIN对于范围内的j(i):max\u val=max(max\u val,price[j]+val[i-j-1])val[i]=最大值返回val[n]arr=[1,2,3,4,5,6,7,8,9,10]size=len(arr)print(剪切杆(arr,size)) 测试病例:
输入
输出
输出
输出
输出
输出
`1 5 8 9 10 17 17 20`
`22`
`1 3 2 5 6 7 4 8`
`12`
`5 6 3 2 4 6 8 7 3 4 6 2 12 4 5 7 4 3`
`90`
`23 2 3 45 34 23 3143 13 13 213 1321 3123 12 312 312 31 3 213 432 41 3 123 43`
`9475`
果冻,7 bytes L???μ§?L length??integer partitions?index§?sum each and take the maximum1my first Jelly answer,so there maximum可能会有改进。
在线尝试!
脚本(节点.js),57字节 a=gt;a[i]=w=a.map(u=gt;v?u: v)
v)
w 在线试用!问题是背包问题。设\$val\left[i\right]\$为长度\$i\$段的。我们有:
- End
免责声明:
本页内容仅代表作者本人意见,若因此产生任何纠纷由作者本人负责,概与琴岛网公司无关。本页内容仅供参考,请您根据自身实际情况谨慎操作。尤其涉及您或第三方利益等事项,请咨询专业人士处理。