如何让我的DP备忘录化为N选K问题的所有结果正确的数组维度来存储?

问题描述 投票:0回答:0

我正在学习数据结构和算法,我可以递归解决,我也明白要添加到备忘表中以节省重复,我做起来很麻烦,如果能给我一些意见会很有帮助。如果你也能实现集图的解决方案,那也很好,但我主要是想找数组的解决方案,供以后参考。我想可能是因为在传递数组的同时,并没有通过引用来传递,因为c++没有这样做,如果是向量会不会是更好的选择呢?我试过了,但也没能让它成功。而Java中的数组解决方案,确实可以通过引用传递数组,但也不行,所以我做错了什么。

代码。

long long int combinMemo(int n, int k, int memo[])  {
    if (k == 0) return 1;
    if (n == k) return 1;
    if(n < k || (n <= 0)) return 0;
    if(memo[k] == 0) {
        return memo[k] = (combinMemo(n - 1, k - 1, memo)) + combinMemo(n - 1, k, memo);          //+ combinMemo(n - 1, k, memo));
    } else {
        return memo[k];
    }
}

long long int combinMemoWrap(int n, int k) {
    int memo[k + 1];
    for(int i = 0; i < k + 1; i++) {
            memo[i] = 0;
    }
    return combinMemo(n, k, memo);
}
c++ recursion syntax memoization
© www.soinside.com 2019 - 2024. All rights reserved.