洛谷小猴吃桃Python
时间: 2024-10-24 13:16:22 浏览: 39
"洛谷小猴吃桃"是一个经典的动态规划问题,通常出现在算法学习的入门阶段,比如在LeetCode或HackerRank等在线平台上的Python编程题目中。这个题目描述了一只小猴子在一系列桃子堆中,每次可以选择吃掉当前堆里的所有桃子,也可以选择从一堆跳到另一堆(如果新的一堆有更多桃子)。目标是找到小猴子能吃到的最大总桃数。
在Python中解决这个问题,通常会定义一个二维数组dp,其中dp[i][j]表示猴子到达第i堆并且吃了第j个桃子后的最大收益。通过遍历每堆的每个桃子,并更新状态转移方程,可以使用递推的方式求解。最后dp[0][0]即为答案。
```python
def maxCherryPick(piles):
dp = [[0 for _ in piles[0]] for _ in piles]
# 初始化第一行,因为只能吃第一堆的第一个桃子
for i in range(len(piles[0])):
dp[0][i] = piles[0][i]
for i in range(1, len(piles)):
for j in range(len(piles[i])):
# 比较跳过这个桃子和直接吃之间的最大价值
dp[i][j] = max(dp[i-1][j], dp[i-1][j+1] + piles[i][j])
return dp[-1][-1]
# 示例
piles = [[3, 4, 5], [2, 7], [9, 1]]
print(maxCherryPick(piles)) # 输出:24
```
阅读全文