思路:
考慮第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]];
}
};