【华为od机试】翻牌求最大分-Python3

■ 题目描述

给出n个牌数,在-100到100之间,求最大得分。

规则如下:连续翻牌,如果选当前牌,则总得分等于上一次翻牌总得分加上当前牌的数字,

如果当前总得分小于它前三次的总得分的话,那此次不翻牌,并且总得分就等于它前三次的得分。

1到3次翻牌数如果小于0的话就取0。

例子:1,-5,-6,4,7,2,-2

(1)1大于零 翻牌
(2)-5 加上1 小于0 不翻 结果为0
(3)-6 加上0 小于0 不翻 结果为0
(4)4 加上0 大于0(1)翻牌 结果为4
(5)7 加上4 大于0(2) 翻牌 结果为11
(6)2 加上11 大于0(3) 翻牌 结果为13
(7)-2 加上14 大于4(4)翻牌 结果为11

n='12,-5,-6,4,-20,2,-2'

if __name__ == '__main__':
    n = list(map(int,n.split(",")))
    if sum(n[:3])<0:
        num =0
    else :
        num = sum(n[:3])

    for i in range(3,len(n)) :
       tmp = num+n[i]
       # print('num: ',num,end=" , ")
       # print("i : ",n[i],end=' , ')
       # print('tmp: ',tmp)
       if tmp>num:
           num =tmp
print(num)

你可能感兴趣的:(华为od刷题,python)