Programming 板


LINE

各位大大好 我上一個發問的問題-「數字組合可能性」,其實是為了解決現在這個問題 目前已經寫的出來數列的冪集合了,感謝回答的大大們 但是現在現實上的情況可能不適用於冪集合,因此再來請教 是這樣的 現在要寫一個程式,有一個數字及一數列,要求這一數字是由數列中的哪些數字加總的 非單一答案,所以要求顯示各種組合性 舉個例子: 90 是由 {30, 20, 50, 40, 60} 這些數字中的哪些數字加總起來的 可能組合性有.. 組合一: 50 + 40 = 90 組合二: 30 + 60 = 90 組合三: 30 + 20 + 40 = 90 這個程式就是像這樣,要讓使用者輸入total和數列,程式再跑出所有組合情況 原本我的想法是用冪集合展開數列中所有數字的組合可能性, 讓各個組合做加總,加總後再去判斷哪個數字等於user輸入的total 等於total的那個組合就是答案了 想說這樣絕對不會miss,因為所有的組合性都會跑過、檢查過,正確性也有 但問題來了,這方式只適用數列個數很小的時候 當數列個數大於20的時候,程式就開始跑很久了 我算過當個數是30時,組合性有10億,每種組合要跑過的話,迴圈至少要跑10億圈 問過user,他們最多有可能到50個數字 所以想請教,有沒有什麼方式或演算法可以解決? 謝謝 另外,我問過數學系的朋友,他的回答也跟我的想法一樣 (就是冪集合的方式,一組一組檢查),可是這樣個數多時會很久 也想過「找零錢問題」 像是 http://tw.myblog.yahoo.com/dust512/article?mid=-2&prev=14&l=a&fid=5 可是「找零錢問題」的情況和我的問題不太一樣,「找零錢問題」的零錢面額可以有 很多個,例如:10元硬碟*n 而我的情況是,同一個組合裡,同一個數字只能出現一次 所以和「找零錢問題」不太一樣 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.33.32.180
1F:→ coolcomm:排序後從大的數開始取 儘早排除不可能的 115.80.157.129 06/05 11:19
2F:→ coolcomm:集合 115.80.157.129 06/05 11:19
3F:→ coolcomm:舉例來說 60+50=110 110>90 就不用在找 115.80.157.129 06/05 11:21
4F:→ coolcomm:其他包含這兩個數的集合了 115.80.157.129 06/05 11:21
5F:→ coolcomm:這樣應該可以? 當然 前提是你的數都是正 115.80.157.129 06/05 11:22
6F:→ coolcomm:數 115.80.157.129 06/05 11:22
7F:→ hangchu:數字都是正數,而且一定大於0 114.33.32.180 06/05 11:27
8F:→ hangchu:一定不會是小數,都是整數 114.33.32.180 06/05 11:28
9F:→ Schottky:背包問題 http://goo.gl/5zzCO 1.34.164.174 06/05 12:37
10F:→ MOONRAKER:Dynamic Programming 118.163.12.174 06/05 17:51
11F:→ MOONRAKER:不對,抱歉 118.163.12.174 06/05 17:57
12F:→ suhorng:樓上說的沒錯 用DP對每一格求出 "有沒有解 118.166.59.251 06/05 20:28
13F:→ suhorng:, 遞迴印解時避開 "沒有解" 的部份 118.166.59.251 06/05 20:28
14F:推 bigpigbigpig:可以試試backtracking(回溯)法 :) 1.169.138.224 06/05 20:49
15F:→ DJWS:http://codepad.org/MwJAGp73 像這樣? 36.225.128.176 06/07 15:19
16F:→ DJWS:http://codepad.org/N1nGdSwS 改一下註解... 36.225.128.176 06/07 15:40
17F:→ hangchu:謝謝大家,我寫出來了 114.41.96.91 06/13 22:05
18F:→ hangchu:謝謝DJWS大大的程式,幫忙很多,感謝^^ 114.41.96.91 06/13 22:06







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP