Re: [問題] 排列組合,相同物品分發制不同容器

看板Programming作者 (喲)時間12年前 (2012/04/14 10:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/11 (看更多)
※ 引述《lovesnake (【忠犬攻一枚】)》之銘言: : ※ 引述《yauhh (喲)》之銘言: : : 看最後一句,猜你的方法有一點特殊性或限制,所以數量少於堆數的二倍才會成功. : : 假設有八個東西要分三堆,你會先整理出 : : 1 1 6 : : 1 2 5 : : 1 3 4 : : ...... : : 這意思是說, 1 1 6 的情況,你要先隨便取一個,然後隨便取一個,然後剩下六個放到 : : 第三堆,這樣是一些組合. 1 2 5 的情況要做另一些組合. 然後 1 3 4 的情況再做 : : 另一些組合. 其他也一樣. : : 這樣應該不會當東西數目超過堆數的二倍時無法分堆了. : 我原本的想法是把物品分成三堆各一個,然後剩下假如說是兩個 : 用字典順序排出以後,找出個數 = 剩餘物品個數的SubSet : 加到原本的三堆裡面... : 您那個想法....是說先做出單一情況,然後在排列組合,有另外6種組合 : 最後列出全部的意思嗎? : 不過列出單一情況這邊的演算法就卡住了Orz : 1 1 6 : 1 2 5 : 1 3 4 : 2 1 5 : 2 2 4 : 2 3 3 : 這是所有的相同東西分到相同堆的結果 : 該怎麼用演算法跑出這樣的結果呢? 這部份應該是簡單到不需要講的吧. 方法很明確,只看你程式會不會寫而已. 對總和8來說,要分為三個數字,因為每個數字至少為1,所以每個數字最多填到6. 所以這是六取三排列,但限定總和為8. : 且如果用出另外六組組合,也會有重複的必須做後面的剔除動作 : 可能有耗效能之嫌 (雖然微不足道啦) : 對您的想法不了解的大概這兩點,謝謝!! 所謂重複,是什麼重複,堆的重複或者是東西的重複? 我以為你是拿那些東西雖然每個都相同,但彼此仍視為不同 (如東西上有打編號之類) 如果是把東西全都看成相同,分堆會變得比較簡單,甚至不用分了, 1 1 6 就是一種分堆 情況, 1 2 5 是第二種情況, ......等. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.67.34 ※ 編輯: yauhh 來自: 61.231.67.34 (04/14 10:47)
文章代碼(AID): #1FYEKUVh (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 4 之 11 篇):
文章代碼(AID): #1FYEKUVh (Programming)