[問題] 重複組合遞迴演算法

看板C_and_CPP作者 (悟道修行者)時間9年前 (2014/09/02 15:27), 編輯推噓2(204)
留言6則, 4人參與, 最新討論串1/2 (看更多)
不是作業,是解 project euler problem 31 時遇到的 https://projecteuler.net/problem=31 我感覺是重複組合的問題。 我想強迫自己用遞迴寫,來練習遞迴的思考方式,但寫到卡住..。 小弟不是資工系的,所以這方面訓練頗薄弱, 如果把問題簡化成 x1 + x2 + x3 + x4 = 20 這種 我的演算法是: 先用變數 flag 紀錄目前 run 到哪個位置 (一開始flag = 4 有個四個參數的函數f) x1 x2 x3 x4 0 0 0 0 0 0 0 1 -> 呼叫 f(0,0,0,0+1) (第幾個參數變動,用flag來判定) 0 0 0 2 ... 0 0 0 20 -> 是一個解, 紀錄起來 0 0 0 21 -> 爆掉 0 0 1 0 -> flag-=1, 最後一個重設為0 0 0 1 1 -> flag 重設為4, 扼.. 反正最後兩行有點問題 我也是在追蹤flag這裡卡住, 想不下去 我感覺用遞迴似乎可以不用flag來記錄執行狀態 有什麼SOP嗎這種題目... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.44.197.231 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409642849.A.846.html

09/02 16:10, , 1F

09/02 16:37, , 2F
SOP就是把所有的state用參數丟給下一層
09/02 16:37, 2F

09/02 16:37, , 3F
當然 甚麼state是必要的甚麼是不必要的就自己推敲了
09/02 16:37, 3F

09/02 17:29, , 4F
我也是有當參數丟下一層 但是在推敲演算法時感覺怪怪的
09/02 17:29, 4F

09/02 17:29, , 5F
簡單來講是大腦燒壞了
09/02 17:29, 5F

09/06 18:32, , 6F
http://codepad.org/WqUKjsqu,用 Python 寫的 ^_^
09/06 18:32, 6F
文章代碼(AID): #1K1N5XX6 (C_and_CPP)
文章代碼(AID): #1K1N5XX6 (C_and_CPP)