最低票价
题目
思路
一天天过一遍,每到一天往前看一下,选出三种情况最小值。
代码
class Solution {
public:
int mincostTickets(vector
<int>& days
, vector
<int>& costs
) {
int n
=days
[days
.size()-1];
vector
<int> dp(n
+1,0);
for(int i
=0;i
<days
.size();i
++)
dp
[days
[i
]]=1;
int c1
,c2
,c3
;
for(int i
=1;i
<=n
;i
++)
{
if(!dp
[i
]) dp
[i
]=dp
[i
-1];
else
{
c1
=dp
[i
-1]+costs
[0];
if(i
>=7) c2
=dp
[i
-7]+costs
[1];
else c2
=costs
[1];
if(i
>=30) c3
=dp
[i
-30]+costs
[2];
else c3
=costs
[2];
dp
[i
]=min(c1
,min(c2
,c3
));
}
}
return dp
[n
];
}
};
转载请注明原文地址: https://mac.8miu.com/read-511294.html