[理工] 演算法問題

作者: 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