动态规划,往前回滚
class Solution {
public int mincostTickets(int[] days, int[] costs) {
int len = days.length;
int min = days[0];
int max = days[len-1];
int[] dp = new int[max+31];
for(int d = max,i=len-1;d>=min;d--){
if(d == days[i]){
dp[d] = Math.min(dp[d+1]+costs[0],dp[d+7]+costs[1]);
dp[d] = Math.min(dp[d],dp[d+30]+costs[2]);
i--;
}else{
dp[d] = dp[d+1];
}
}
return dp[min];
}
}