【发布时间】:2013-12-05 14:47:20
【问题描述】:
在计划中对背包问题进行编程是否走在正确的轨道上?我的程序不必考虑对象“值”,只考虑它们的权重。目标是选择最佳的物品组合,让我的包里有大约一半的重量。
(define (split-equip wlst)
(define (sum lst)
(define (sum-h accum lst1)
(if (null? lst)
(/ accum (length lst))
(sum-h (+ (car lst1) accum) (cdr lst1))))
(sum-h 0 lst))
(define (split-equip-h)
(let ((target-w (/ (sum wlst) 2)))
我很想编写我的程序来输出一个包含所有可能的不同权重组合的列表,然后遍历该列表直到找到最佳的权重集,但不知道如何实现。
【问题讨论】:
-
你的想法是对的;计算所有组合,然后找到最接近(总重量)/2 的组合。可能有多个组合具有正确的权重,因此结果应该是一个组合列表。尝试先做组合部分。
标签: recursion scheme knapsack-problem