[理工] 算法问题

楼主: a3813z4813 (johnny110)   2017-10-29 20:17:33
请教一下我遇到的算法问题
有n个人,体重都是整数
1-1请设计一个算法把人分成两堆且两堆的重量相等(两堆不用相等)
1-2假设n为偶数,请设计一个算法把人分成两堆,两堆的重量相等且每一堆各为n/2个

请问一下要怎么解呢 卡的有点久...
谢谢!
作者: FRAXIS (喔喔)   2017-10-29 20:27:00
作者: Xunion (Xun)   2017-10-30 09:10:00
想借问一下,for循环内的if/else那边,里面运算都是P(i, j)=P(i, j-1)的话为什么还要用if/else包起来
作者: sarsman (DeNT15T♠)   2017-10-30 11:48:00
if内的是P(i, j-1) or P(i-S[j-1], j-1)这两个Boolean中有一者为True,P(i, j)即为True
楼主: a3813z4813 (johnny110)   2017-10-30 15:12:00
大致懂了谢谢 ,但请问第二题 ,要怎么能知道刚好是n/2个呢?有的解释是可以把为1的记录在一个表格里,然后backtracking,但若backtracking到人数不是一半的解这样就错了
作者: FRAXIS (喔喔)   2017-11-05 08:57:00
你要修改 DP 吧 令P(i, j) = 1, if 有一个 size i 的sorry, P(i, j, k) = 1 if 在前 i 个人中有 一个 size j的 subset 其总和为 k

Links booklink

Contact Us: admin [ a t ] ucptt.com