不是作業,是解 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嗎這種題目...