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

作者: alfadick (悟道修行者)   2014-09-02 15:27:24
不是作業,是解 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嗎這種題目...
作者: cutekid (可愛小孩子)   2014-09-02 16:10:00
作者: jackace (inevitable......)   2014-09-02 16:37:00
SOP就是把所有的state用參數丟給下一層當然 甚麼state是必要的甚麼是不必要的就自己推敲了
作者: alfadick (悟道修行者)   2014-09-02 17:29:00
我也是有當參數丟下一層 但是在推敲演算法時感覺怪怪的簡單來講是大腦燒壞了
作者: bigpigbigpig (To littlepig with love)   2014-09-06 18:32:00

Links booklink

Contact Us: admin [ a t ] ucptt.com