1、题目
https://leetcode-cn.com/problems/minimum-cost-for-tickets/
2、题意
题解1:dp
class Solution {
public:
int mincostTickets(vector<int>& days, vector<int>& costs) {
vector<int> sum(366,-1);
int m = days.size();
for(int i=0;i<days.size();i++)
sum[days[i]] = 0;
sum[0] = 0;
for(int i=1;i<=days[m-1];i++)
{
if(sum[i]!=-1)
{
sum[i] = sum[i-1]+costs[0];
if(i<7)
sum[i] = min(sum[i],costs[1]);
else
sum[i] = min(sum[i],sum[i-7]+costs[1]);
if(i<30)
sum[i] = min(sum[i],costs[2]);
else
sum[i] = min(sum[i],sum[i-30]+costs[2]);
}
else//当天不旅行
sum[i] = sum[i-1];
}
return sum[days[m-1]];
}
};