1006. 求和游戏
发布日期:2025-06-07 20:20:42
浏览次数:3
分类:精选文章
本文共 968 字,大约阅读时间需要 3 分钟。
石柱键盘最大子数组和问题
问题描述
在一排石柱键盘中,每个键上都有一个整数。我们需要选择两个键,使得这两个键及其之间的键上的数字之和最大。如果这个最大的和不为正,则输出“Game Over”。
输入格式
第一行:键的个数n。
接下来n行:每个键上的整数。
输出格式
一行,最大和或者“Game Over”。
样例输入
53-57-28
样例输出
13
样例输入
3-6-9-10
样例输出
Game Over
解决方案
为了找到两个键及其之间的键的最大子数组和,我们可以使用动态规划的方法。具体步骤如下:
初始化变量:
- current:当前累加的子数组和。
- min_val:记录当前遍历过程中的最小值。
- ans:记录最大子数组和。
遍历每个键的值:
- 将当前键的值加到current中。
- 更新ans为当前current与ans中的最大值。
- 更新min_val为当前min_val与current - 最后一个键的值中的较小者。
判断结果:
- 如果ans大于0,输出ans。
- 否则,输出“Game Over”。
代码实现
#includeusing namespace std;int max(int a, int b) { return a > b ? a : b; }int minn(int a, int b) { return a > b ? b : a; }int main() { int n, x; cin >> n; int current = 0, min_val = 0xffffff, ans = 0; for (int i = 0; i < n; ++i) { cin >> x; current += x; ans = max(ans, current - min_val); min_val = minn(min_val, current - x); } if (ans > 0) { cout << ans; } else { cout << "Game Over"; }}
这个解决方案通过动态规划的方法,有效地找到键盘上两个键及其之间的键的最大子数组和。
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2026年06月01日 09时30分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ping 命令的七种用法,看完瞬间成大神
2023-03-02
Pinia入门(快速上手)
2023-03-02
Pinia:$patch的使用场景
2023-03-02
Pinia:$subscribe()的使用场景
2023-03-02
Pinpoint对Kubernetes关键业务模块进行全链路监控
2023-03-02
Pinterest 大规模缓存集群的架构剖析
2023-03-02
PinYin4j库的使用
2023-03-02
PIP
2023-03-02
pip install mysqlclient报错
2023-03-02
pip install 出现报asciii码错误的解决
2023-03-02
pip throws TypeError: parse() got an unexpected keyword argument ‘transport_encoding‘ 在尝试安装新软件包时
2023-03-02
pip 下载慢
2023-03-02
pip 安装opencv-python卡死
2023-03-02
pip 安装出现异常
2023-03-02
Pip 安装失败:需要 SSL
2023-03-02
Pip 安装挂起
2023-03-02
pip 或 pip3 为 Python 3 安装包?
2023-03-02