看板 C_and_CPP 關於我們 聯絡資訊
這次遇到一個難題..... 那就是 Cryptarithmetic Puzzle 這是一個以英文字母代替數(digit) 的遊戲(?) 以下是範例: send + more = money 請問以上英文字母各代表什麼數字?? 答案是 m = 1 y = 2 e = 5 n = 6 d = 7 r = 8 s = 9 send + more = money 9567 + 1085 = 10652 另外一個例子 logic + logic = prolog 90452 + 90452 = 180904 ------------------------------------------------------------------ 說了那麼多 我的問題是: 請問到底要怎麼解這個問題本身啊?? 雖然我有到這個網站去下載Source Code http://bach.istc.kobe-u.ac.jp/llp/crypt.html 可是他寫的錯綜複雜 而且 #define 來 #define 去的..... 這一秒記起來這個變數是裝什麼 下一秒又忘了 整個邏輯看不出來..... 請問這個問題本身要怎麼樣去解?? 雖然我有想過可以用暴力法去將所有字母從0~9排一次去test 不對就換 但我想應該有更好的辦法吧?? 到底這個問題本身要如何去解?? 或是可以給我這個遊戲的中文名稱 好讓我去找答案@.@ 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.232.58.39
loveme00835:其實10階層並不會很多阿...XD 03/15 01:25
liu2007:還是不要隨隨便便去碰!的東西比較好XDDDDD 03/15 01:27
loveme00835:不過大致看了一下源碼, 好像每位數是用遞迴作的, 雖然 03/15 01:59
loveme00835:沒有很暴力... 03/15 02:01
yuscvscv:10! = 3628800 挺快的啊.... 03/15 02:50
liu2007: 我連高中生都不如 |||Orz...... 03/15 08:36
※ 編輯: liu2007 來自: 118.232.58.39 (03/15 08:37)
bleed1979:C名題精選百則有類似的題目,可以參考解法。 03/15 09:16
感謝 bleed1979 大大提供網站 不過...... 我找不到解題的方法@.@ 我了解題目的意思 只是我想知道是否有比暴力法更好的解法 ※ 編輯: liu2007 來自: 118.232.58.39 (03/15 09:21)
loveme00835:你可以改用遞迴讓他更有彈性, 但應該還是要窮舉出來 03/15 09:33
loveme00835:建表紀錄某個位數有沒有被使用, 沒使用就往下遞迴呼叫 03/15 09:35
loveme00835:到了所有字母都對應到一個位數, 就開始測試, 把成功的 03/15 09:36
loveme00835:結果存在某處 03/15 09:36
liu2007: 果然還要全部舉出來Orz..... 03/15 11:08
jlovet:你本人如果遇到這個問題怎麼解就怎麼解... 03/15 14:03