题目分析:可以买一天票,七天票,30天票
class Solution(object):
def generateParenthesis(self, days, costs):
"""
:type n: int
:rtype: List[str]
"""
dp = [0]*366
j = 0
for i in range(days[0], 366):
if i == days[j]: # 这一天需要旅游
dp[i] = dp[i-1]+costs[0]
if i >= 7:
dp[i] = min(dp[i-7]+costs[1], dp[i])
else:
dp[i] = min(dp[i], costs[1])
if i >= 30:
dp[i] = min(dp[i-30]+costs[2], dp[i])
else:
dp[i] = min(dp[i], costs[2])
j += 1
if j == len(days):
return dp[i]
else: # 这一天不出去旅游
if i > 0:
dp[i] = dp[i-1]
class Solution(object):
def generateParenthesis(self, days, costs):
"""
:type n: int
:rtype: List[str]
"""
dayset = set(days)
durations = [1, 7, 30]
def dp(i):
if i > 365:
return 0
elif i in dayset:
return min(dp(i + d) + c
for c, d in zip(costs, durations))
else:
return dp(i + 1)
return dp(1)