Re: [問題] 列出一正整數之數字組合

看板Programming作者 (黑駿)時間15年前 (2010/08/29 17:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《rewqasdf (海的回憶)》之銘言: : 請問輸入一正整數之後 輸出其所有組合方法 : 如 : 3=2+1=1+1+1 : 4=3+1=2+2=2+1+1=1+1+1+1 : 請問這該用什麼角度去思考問題解答 這個好像叫作無限背包 用一個陣列 dp[某數] = 幾種組合方法 記錄 不用任何數字組出 方法數 (初始) n = 0 1 2 3 4 5 ... dp[n] = 1 0 0 0 0 0 ... 只用 1 組合 方法數 ( dp[i] += dp[i-1] i = 1 to n ) i 可以是 i-1 加上 1 而來 n = 0 1 2 3 4 5 ... dp[n] = 1 1 1 1 1 1 ... 只用 1,2 組合 方法數 ( dp[i] += dp[i-2] i = 2 to n ) i 可以是 i-2 加上 2 而來,方法數為:原來不用2的方法 + 用2的方法 n = 0 1 2 3 4 5 ... dp[n] = 1 1 2 2 3 3 ... 只用 1,2,3 組合 方法數 ( dp[i] += dp[i-3] i = 3 to n ) i 可以是 i-3 加上3而來 n = 0 1 2 3 4 5 ... dp[n] = 1 1 2 3 4 5 ... 到這裡,dp[4] = 4表示: 4 = 1+1+1+1 //只用 1 組合 = 1+2 = 2+2 //只用 1,2 組合 = 1+3 //只用 1,2,3 組合 共 4 種 其他以此類推~~ 如果有說明不清楚或錯誤的 請不吝賜教~ 謝謝 -- 光明 的背後 是 黑暗 黑暗 的背後 還是 黑暗 由此可知 黑暗 > 光明 Q.E.D. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 124.8.140.3
文章代碼(AID): #1CUYW51B (Programming)
文章代碼(AID): #1CUYW51B (Programming)