LeetCode 983. 最低票价 DP

思路:

考虑第i天的最低票价,因为三种票分别可以作用1天、7天、30天,那么第i天的票价受到第第i-1天、第i-7天、第i-30天的影响,而且在这些天时,我们要再买一个costj,才可以作用到第i天,例如,第i-7天最低票价是f[i-7],那么再买一个cost1,才可以作用到第i天。

代码:

class Solution
{
public:
    int dp[1000];
    bool vis[1000];
    int mincostTickets(vector<int>& days, vector<int>& costs)
    {
        for(int i=0; i<days.size(); i++)
            vis[days[i]]=1;
        //dp[1]=costs[0];
        for(int i=1; i<366; i++)
        {
            if(!vis[i])
            {
                dp[i]=dp[i-1];
            }
            else
            {
                dp[i]=min(dp[i-1]+costs[0],min(dp[max(0,i-7)]+costs[1],dp[max(0,i-30)]+costs[2]));
            }
        }
        return dp[days[days.size()-1]];
    }
};

发布了1062 篇原创文章 · 获赞 72 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/lanshan1111/article/details/105055079