最近寫Visa OA遇到的問題
問題:
假如有一個數字n, 你每次可以拿1個或3個請問有幾種不同組合?
範例1:
n = 7
所有的組合有9種, 回傳9:
[1, 1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 3]
[1, 1, 1, 3, 1]
[1, 1, 3, 1, 1]
[1, 3, 1, 1, 1]
[3, 1, 1, 1, 1]
[1, 3, 3]
[3, 1, 3]
[3, 3, 1]
我用背包問題的解法, time complexity 是O(n), 可是會timeout, 因為 1 <= n <= 1e9,想請問一下有沒有log(N)的解法?
感謝大家
作者: yvb 2018-10-02 20:54:00
倒底是問幾種組合還是排列方式? 只要知道幾種還是要條列出來?要條列的話, n=1e9 會不會光印結果就超時了?
作者:
cutekid (可愛小孩子)
2018-10-03 01:21:00F(n) = F(n-1) + F(n-3),求 F(1,000,000,000)
作者: yvb 2018-10-04 22:46:00
抱歉, 請忽略我前面腦殘. 原PO 需要引入矩陣快速冪算法.