AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

P3394. 玩牌高手

简单通过率 51% · 提交 1,066 · 通过 548
动态规划模拟DP

小慕正在参加一个积分挑战赛,他有一个长度为n的,表示在n轮比赛中每轮可获得的分数。小慕需要按照规则选择是否拿分,请计算所有轮结束后他能获得的最高总分数。 选择规则如下: 1. 在每一轮中,小慕可以选择获得该轮的分数,此时他的总分数会加上该轮的分数。 2. 小慕也可以选择跳过该轮,直接进入下一轮,此时他的总分数会变回3轮前的总分数。如果当前轮次小于等于3(即第1、2、3轮选择跳过),则总分数重置为0。 3. 小慕的初始总分数为0,并且必须依次参与每一轮。

提示:带虚线的词点一下有通俗解释。

输入描述

第一行为一个小写逗号分割的字符串,表示n轮的牌面分数,1 <= n <= 20。 分数值为整数,-100 <= 分数值 <= 100。 不考虑格式问题。

输出描述

所有轮结束后选手获得的最高总分数。

示例

示例 1

输入

1,-5,-6,4,3,6,-2

输出

11

示例 2

输入

0,0,0

输出

0

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
玩牌高手 - 状态转移图解 第1轮 第2轮 第3轮 第4轮 第5轮 拿牌:+分数 跳过→分数置0 跳过→分数置0 跳过→分数置0 跳过→回到第1轮分数 状态转移说明 • 拿牌:当前总分 += 本轮牌面分数 • 跳过(前3轮):总分置为0 • 跳过(第4轮起):总分 = 3轮前的总分 • 目标:所有轮结束后总分最大
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「玩牌高手」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。