本文共 968 字,大约阅读时间需要 3 分钟。
在一排石柱键盘中,每个键上都有一个整数。我们需要选择两个键,使得这两个键及其之间的键上的数字之和最大。如果这个最大的和不为正,则输出“Game Over”。
第一行:键的个数n。
接下来n行:每个键上的整数。
一行,最大和或者“Game Over”。
53-57-28
13
3-6-9-10
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"; }}
这个解决方案通过动态规划的方法,有效地找到键盘上两个键及其之间的键的最大子数组和。
转载地址:http://rirfk.baihongyu.com/