Re: [問題] 樂透號碼最佳化的問題

看板Prob_Solve (計算數學 Problem Solving)作者 (Omoide wa Okkusenman!)時間13年前 (2011/02/27 11:31), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串9/9 (看更多)
※ 引述《bleed1979 (十三)》之銘言: : 我試著先改成以下的情況,複製了之前計算過的method。 : 跑出的答案就是1600, choose: 1 2 3 4 : 不過我想可能要多生幾個case來測試,無法確認正確性。 : Bleed : for(int i = 0; i < n; ++i) { : if(i > 0) { : method[i] = method[i - 1]; : } copy 那組虛擬的解我認為是錯的,因為就 method[200] 而言, 0 的 bit pattern 所代表的號碼不應該讓購買者中 $200 且這裡用 i 當 method 的 index 很奇怪… method 的 index 是獎金的金額 i 是下注獎卷的 index... : for(int j = sum; j >= coin[i]; --j) { : int k = j - coin[i]; : if(method[k].size()) { : set<int> :: iterator it = method[k].begin(); : while(it != method[k].end()) { : int new_int = *it | coin_bit[i]; : if(count_bit(new_int) <= 5) { : method[j].insert(new_int); : } : ++it; : } : } : } : } : Bleed : == : 我剛看懂意思了,的確有盲點。 : 現在改一下程式碼,希望不要大改才好。 : Bleed -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.40.140.129 坦白說我覺得很困惑為什麼加上 method[i] = method[i - 1]; 就可以跑出正確的答案 :D (我手邊沒有 compiler + debugger, 沒法實測) ※ 編輯: AmosYang 來自: 24.40.140.129 (02/27 11:42) 我猜 method[i] = method[i - 1]; 是 method[coin[i]] = method[coin[i-1]] 的誤植 … 不過…還是很怪 :D ※ 編輯: AmosYang 來自: 24.40.140.129 (02/27 12:44)

02/27 12:57, , 1F
加那一段的確是錯的,應該是湊巧剛好對的。
02/27 12:57, 1F
文章代碼(AID): #1DQSMlpp (Prob_Solve)
討論串 (同標題文章)
文章代碼(AID): #1DQSMlpp (Prob_Solve)