已知有7种棍子长度,分别为 31cm、47cm、57cm、73cm、87cm、102cm、117cm,问:若只选择其中3种长度的棍子,到底选择哪三种长度能够在尽量少用棍子根数的情况下,让棍子能尽量连接成1000cm以内的任意长度。
|
stackpopNov 12, 2014
1
背包问题?
|
|
obNov 12, 2014
2
任意长度?32cm怎么连?
|
|
heian0224Nov 12, 2014
4
对于a b c三种长度,凑成1000cm以内的一个长度l对应的分配方案为al,bl,cl
这个分配方案需要棍子根数为pl,(可能几种,pl为最少的棍子根数)然后将这些数据存储在p[1000]的数组中,没有分配方案的置为0,然后这个数组中非0元素个数为n,n/1000记为达成率。棍子总数为数组中全部元素的和m。 然后用循环讲7种取3种的组合方案实现进行比较n取最大保存在一个三维数组中,n相同情况再比较m。 算法大概是这样的。笔算好复杂,还是机器来算吧。 |
|
blacktulipNov 12, 2014
5
感觉题目有问题,两个「尽量」会有冲突。
|
|
littleweyNov 12, 2014
6
觉得可能有问题,如果两种方案各自包含对方无法组成的长度,如何评判哪个更好?靠能占的不同长度的方案数量?
|
|
dingyaguang117Nov 12, 2014
7
@blacktulip 2个尽量 应该有个优先级
|
|
imn1Nov 12, 2014
8
高人指教下 30cm、32cm 怎么选?
|
|
ExinNov 12, 2014 via iPad
9
如楼上所说,题目不太清楚
|
|
10
我是 lz,第一个“尽量”优先级更大一些
|