思路
日期变量型思路需要遍历一年中所有的天数,无论 days 的长度是多少。
但是观察日期变量型的递推式,我们可以看到,如果我们查询 dp(i),而第 i 天我们又不需要出行的话,那么 dp 函数会一直向后计算 dp(i+1)=dp(i+2)=dp(i+3) 一直到一年结束或者有一天我们需要出行为止。那么我们其实可以直接跳过这些不需要出行的日期,直接找到下一个需要出行的日期。
算法
现在,我们令 dp(i) 表示能够完成从第 days[i] 天到最后的旅行计划的最小花费(注意,不再是第 i 天到最后的最小花费)。令 j1是满足 days[j1]>=...