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

看板Programming作者 (【忠犬攻一枚】)時間12年前 (2012/04/14 10:33), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/11 (看更多)
※ 引述《yauhh (喲)》之銘言: : ※ 引述《lovesnake (【忠犬攻一枚】)》之銘言: : : 求標題之演算法 : : 其實就是分堆啦 : : 假設有五個東西,分成三堆有幾種分法這樣 : : 1 1 3 : : 1 2 2 : : 2 1 2 : : 2 2 1 : : 1 3 1 : : 3 1 1 : : 沒有按照順序,不過需要列印出來的大概像這樣。 : : 因為是分到不同容器所以會有差別,所以內部是個SET而不是序列。相同的不能刪。 : : 謝謝!! : : 已經想過很多方法,不過最終只做到東西的數量<堆數*2的時候才能成功。 : : 大於的演算法始終想不出來。 : 看最後一句,猜你的方法有一點特殊性或限制,所以數量少於堆數的二倍才會成功. : 假設有八個東西要分三堆,你會先整理出 : 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 這是所有的相同東西分到相同堆的結果 該怎麼用演算法跑出這樣的結果呢? 且如果用出另外六組組合,也會有重複的必須做後面的剔除動作 可能有耗效能之嫌 (雖然微不足道啦) 對您的想法不了解的大概這兩點,謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.121.216.68
文章代碼(AID): #1FYE7dO- (Programming)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 3 之 11 篇):
文章代碼(AID): #1FYE7dO- (Programming)