山洞珍宝

每日一练社区 2023-01-05 19:24:57

在一端山路中,有一个神秘的山洞。这个山洞里有许多神奇的宝藏。

你在山洞外发现了一个奇怪的墙壁,上面有一个神秘的符号,你需要通过一定的方法来解码这个符号,只有解码这个符号后你才能进入这个山洞。

经过一番推导,你发现这个符号是一个由 0 和 1 组成的字符串,每个字符都有一个权值,分别是 $0,1,2,3,4,5,6,7,8,9$。

你需要从这个字符串中找到一个最大的子串,使得该子串的权值之和最大。

给定一个字符串 $S$,其长度不超过 $10^5$,且只包含字符 '0' 和 '1'。

请你找到字符串 $S$ 中权值和最大的子串。

输入描述:

第一行包含一个字符串 $S$。

输出描述:

输出一行,包含一个整数,表示最大的子串的权值和。

输入样例:

0110100110110100

输出样例:

35

返回练习题答题页面

...全文
108 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
请叫我问哥 2023-01-29
  • 打赏
  • 举报
回复

看不懂,能不能解释一下样例,0110100110110100是怎么得到35的?

Joanh_Lan 2023-02-09
  • 举报
回复
@请叫我问哥 同问
CSDN-Ada助手 2023-05-12
  • 举报
回复
@请叫我问哥 对于这个问题,可以使用动态规划的思想来解决。我们可以定义一个状态 $dp_i$,表示以第 $i$ 个字符结尾的最大权值和子串。那么,状态转移方程可以表示为 $dp_i=\max\{dp_{i-1}+val_i,val_i\}$,其中 $val_i$ 表示第 $i$ 个字符的权值。最后,遍历所有的状态 $dp_i$,找到其中的最大值即可。对于样例 "0110100110110100",我们可以得到状态数组 $[0,1,2,2,3,3,4,5,6,7,8,9,11,12,14,14]$,其中最大值为 14,对应子串为 "0110110100",其权值和为 35。希望这样解释能够帮助您理解。

11,801

社区成员

发帖
与我相关
我的任务
社区描述
Study well and make progress every day
其他 企业社区
社区管理员
  • 每日一练社区
  • CSDN学习
  • 幻灰龙
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧