Prob_Solve 板


LINE

先把最重要的結論寫在最前頭, 那就是我並沒有想到什麼神奇的演算法 XD 20 個號碼選 5 個開出, 也就是共有 C(20,5) = 15504 個可能的開獎組合, 這個數字實在說不上多, 我想即使是暴力法應該也不會花太多時間。 如果你只需要執行效率,而並不是非要提出一個演算法, 我建議採用 bit mask 來處理這問題, 例如開出 1 2 4 10 13 這五個號碼時, 可以用 0001001000001011 (命名為 a) 來表示。 購買 2,10,13 這三個號碼則是 0001001000000010 (命名為 b), 要判斷這 3 個號碼是不是全都包含在開獎號碼內, 你只需要檢查 (~a & b)==0 即可。 註: ~ 表示 bitwise not。 我相信用這種寫法,比起陣列要快個五倍應該不是問題。 另外就是可以消去 C(20,5) 中不可能出現的組合,(即沒有半個人中獎的組合) 我的想法是把所有的購買組合中只有一個號碼的先拿出來, 重複的號碼也只取一個,然後加入另外一個數。 例如數字 7 就會擴充成 (1,7), (2,7), ..., (6,7), (7,8), ..., (7,20) 然後再把所有購買組合種有兩個號碼的組合再加進去, 一樣拿掉所有重複的,並且繼續重複至共有 5 個數字, 這樣集合中任一個開獎組合, 都可以保證至少有一個購買組合能中獎 (因為都是從購買組合擴充來的) 雖然這作法或許能加速,但並不會減少演算法的複雜度。 ※ 引述《shipship (Ship)》之銘言: : 最近在跑一個模擬,遇到一個最佳化問題請各位板大幫忙看看: : 現有一個對獎系統,從20個號碼中選5個做為這次的中獎號碼 : 有一群下注資料,格式如下: : 978 3 2 10 13 //獎金978元,買了三個號碼,分別為2,10,13 : 5921 2 1 14 : 8027 4 1 4 6 9 : 7931 4 5 9 10 15 //獎金7931元,買了四個號碼,分別為5,9,10,15 : 4957 2 2 16 : 中獎的條件是該客人所買的號碼全中(全部都在5個中獎號碼中出現) : 假設今日開獎號碼為1 2 4 10 13 16 : 則總獎金為978+4957 : 請求出,開出哪5個號碼,可以使得大家所得到的獎金最高? : 每個人可以買的號碼數量為2~5,資料筆數不超過六千 : 我想了好久,目前都出的演算法,分析一下都還是暴力解。 : 請板大有甚麼意見請踴躍討論 感謝 -- T$,修好它吧。 ⊙─ ─⊙▂⊙ 碰到問題,用SoftICE就對了! █◤ Lee T$ Chen MYTHBUGTERS by dajidali --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.231
1F:推 ledia:其實就是有出現過的數字取 5, 重新定 index 的做法 01/11 15:25
2F:推 shipship:抱歉不好意思,這是模擬的資料,真正的資料是C52取6 01/11 16:46
3F:推 shipship:如果暴力會變成 2*10^7*5*10^3(五千筆) *5(最多5個數字) 01/11 16:52
4F:→ shipship:10^12........> < 01/11 16:53
接續我的第二個解法。 在做擴充的時候,把原中獎金額加到擴充後的組合上, 這樣開出來的時候,就已經算好總共會中多少錢了。 複雜度還是只有 C(52,6)。 ※ 編輯: tkcn 來自: 140.114.78.231 (01/11 17:12)
5F:→ AmosYang:想不出有什麼神奇的辦法可以把 big-O 從 O(n!) 降下來... 01/11 19:07
6F:推 ledia:感覺有機會 reduce 到 MAX-SAT ... 或是類似的 NPC 問題 01/11 21:56
7F:→ ledia:如果是這樣的話, 就是暴力或估計了 01/11 21:56







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燈, 水草

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

TOP