首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >记忆递归解(DP)

记忆递归解(DP)
EN

Stack Overflow用户
提问于 2020-04-26 03:16:27
回答 1查看 42关注 0票数 1

我已经为问题https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-transaction-fee写了这个递归,我想知道我们如何才能记住这个解决方案(使用dp数组)。或者我们必须以一种特定的方式编写递归来记忆它?

代码语言:javascript
复制
class Solution {
public:


    int solve(vector<int>& prices,int fee,int i,int profit,int buy,int sell)
    {
        if(i==prices.size())
        {
            if(buy==sell)
                return profit;
            else
                return 0;
        }

        int ans = 0;

        ans = max(ans,solve(prices,fee,i+1,profit,buy,sell));

        if(buy>sell)
        {
            ans = max(ans,solve(prices,fee,i+1,profit+prices[i]-fee,buy,sell+1));
        }
        else 
        {
            ans = max(ans,solve(prices,fee,i+1,profit-prices[i],buy+1,sell));
        }

        return ans;

    }

    int maxProfit(vector<int>& prices, int fee) {
        vector<int> diff;
        int sum = 0;
        sum = solve(prices,fee,0,0,0,0);

        return sum;
    }
};
EN

回答 1

Stack Overflow用户

发布于 2020-04-26 03:48:35

您可以创建一个元素i等于solve(i)的数组。然后,在您的函数内部,您可以通过引用每个调用来传递此数组。如果获得的输入是在数组中定义的,则在函数测试中添加if/else结构,如果是,则返回arrinput,如果不是,则运行常规函数,除非在返回之前,将arrinput初始化为将返回的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61431211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档