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]];
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章