Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 341479a

Browse files
🐱(dynamic): 983. 最低票价
1 parent 929b3c2 commit 341479a

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

‎docs/algorithm/dynamic/README.md‎

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,6 +1508,35 @@ class Solution:
15081508
return len(res)
15091509
```
15101510

1511+
## 983. 最低票价
1512+
1513+
[原题链接](https://leetcode-cn.com/problems/minimum-cost-for-tickets/)
1514+
1515+
### 解一:动态规划
1516+
1517+
从后往前进行动态规划,用 `dp[i]` 代表从第 `i` 天到最后一天需要的最低票价。
1518+
1519+
-`i` 无需出行时,依据贪心法则:`dp[i] = dp[i + 1]`,即在第 `i` 天无需购票
1520+
-`i` 需要出行,`dp[i] = min(costs[j] + dp[i + j])`,`j` 的取值是 1/7/30。如果第 `i` 天出行,我们买了 `j` 天的票,那么后续 `j` 天都不需要购票事宜了,所以只要加上 `dp[i + j]` 的票价即可。
1521+
1522+
```python
1523+
class Solution:
1524+
def mincostTickets(self, days: List[int], costs: List[int]) -> int:
1525+
ans = 0
1526+
dp = [0 for _ in range(400)]
1527+
for i in range(365, 0, -1):
1528+
if i in days:
1529+
# 需要出行
1530+
min_dp = float('inf')
1531+
min_dp = min(costs[0] + dp[i + 1], costs[1] + dp[i + 7], costs[2] + dp[i + 30])
1532+
dp[i] = min_dp
1533+
else:
1534+
# 不需要出行
1535+
dp[i] = dp[i + 1]
1536+
# print(dp[20])
1537+
return dp[1]
1538+
```
1539+
15111540
## 1137. 第 N 个泰波那契数
15121541

15131542
[原题链接](https://leetcode-cn.com/problems/n-th-tribonacci-number/)

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /