看板 C_and_CPP 關於我們 聯絡資訊
ver0.2版很快就出來了。 1 2 3 4 5 6 7 8 1 13 108 622 1784 1856 609 47 (1 + 26 + 324 + 2488 + 8920 + 11136 + 4263 + 376) / 5040 = 27534 / 5040 = 5.463095238 code: http://codepad.org/6rTBUQ3h 小改: 以權重的方式,初始每個可能解的權重為1 假設找到1A2B,那麼一組可能解的前4 - 1 = 3位數若符合2B,權重加1。 假設找到2A2B,那麼一組可能解的前2位數若符合2B,權重加1。 以此類推。 priority_queue的top是權重最重的,表示最有可能是正解。 比起前一版的重要改進是至多8次非9次。 ========================================================== 終於跑完了,未survey任何資料的非隨機1次結果: 1 2 3 4 5 6 7 8 9 1 13 108 603 1704 1820 693 95 3 1*1 + 2 * 13 + 3 * 108 + 4 * 603 + 5 * 1704 + 6 * 1820 + 7 * 693 + 8 * 95 + 9 * 3 = 1 + 26 + 324 + 2412 + 8520 + 10920 + 4851 + 760 + 27 = 27841 27841 / 5040 = 5.524007936507937 果然很糟糕,survey後再寫看看。 code: http://codepad.org/wbz29TlY algorithm(其實也談不上): 1.開2組各10個priority_queue,先把5040種可能依首字放入。 2.找這10個priority_queue數量最多的top猜nAmB,猜完後pop。 3.如果n = 4,返回猜測次數。跳至5. 4.假設 nA mB,在這10個priority_queue裡的候選字組與這個top猜n2Am2B, 猜完後pop。如果 n2 = n && m2 = m,則放入第二組首字相同的priority_queue 交換兩組priority_queue。然後跳至2. 5.結束。 ※ 引述《SocketAM2 (AM2)》之銘言: : 前陣子在python版看到有人討論到這個當年煞到我的遊戲, : 一下子熱血舊夢又被重燃... : 我還算有能力把我手上的想法用C弄出來, : 幾個程式設計相關的板這裡也算是人氣較旺, : 來這裡搞搞看有沒有人願意一起來玩玩瘋瘋 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.177.97 ※ 編輯: bleed1979 來自: 114.32.177.97 (09/22 16:38)