该算法的运行时间如何O(n * a),其中a是列表符号的长度

时间:2019-04-03 03:54:14

标签: time time-complexity

我试图了解这种动态编程算法的运行时间以及空间复杂度。此算法返回可以从面额列表中创建数字n的零钱总数。例如,如果denom is [25] and n is 100 the result is 1 as 25 * 4 = 100。 m是记忆对象。

function f(n, denom, index,m,ad) {
    var str = index + "-" +n
    var val = denom[index]
    var ways = 0;
    if(m[str]){return m[str]}
    if(index > denom.length - 1 && n == 0) {return 1}
    for(var i = 0; i <= Math.floor(n/val); i++) {
        ways += f(n - (i * val), denom, index + 1,m,ad)
    }
    m[str] = ways
    return m[str];
}

0 个答案:

没有答案