文章目錄
- 跳格子2
跳格子2
- 小明和朋友玩跳格子游戲,有n個連續格子組成的圓圈,每個格子有不同的分數,小朋友可以選擇從任意格子起跳,但是不能跳連續的格子,不能回頭跳,也不能超過一圈,給定一個代表每個格子得分的非負整數數組,計算能夠得到的最高分數;
輸入描述:
輸入分數數組;第一個與最后一個首尾相連;
輸出描述:
能夠得到的最高分
示例1
輸入:
2 3 2
輸出:
3
示例2
輸入:
1 2 3 1
輸出:
4
示例3
輸入:
3 5 7 1 2 4 1 9 10
輸出:
23
python實現:
- 只有一個格子時,就跳這一個;
- 有兩個格子時,跳一個最大分數的;
- 多個格子時,分情況0~n-2 or 1~n-1
def calc_score(start, end):pre, cur = 0, 0for i in range(start, end + 1):current = max(cur, pre + nums[i]) # cur 為當前最大值pre, cur = cur, currentreturn curdef skip(nums):if not nums:return 0n = len(nums)if n == 1:return nums[0]elif n == 2:return max(nums[0], nums[1])# 兩種情況case1 = calc_score(0, n - 2)case2 = calc_score(1, n - 1)return max(case1, case2)# 讀取輸入
nums = list(map(int, input().split()))
# 輸出結果
print(skip(nums))