C++ 寻找环形数组最大连续四数和
以下是 C++ 的一个解法:
#include <iostream>
#include <vector>
using namespace std;
int main() {
int N;
cin >> N;
vector<int> nums(N);
for (int i = 0; i < N; i++) {
cin >> nums[i];
}
int maxSum = 0;
int startPos = 0;
for (int i = 0; i < N; i++) {
int sum = 0;
for (int j = 0; j < 4; j++) {
sum += nums[(i + j) % N];
}
if (sum > maxSum) {
maxSum = sum;
startPos = i;
}
}
cout << maxSum << ' ' << startPos + 1 << endl;
return 0;
}
首先,我们读取输入的 N 和连续 N 个数字,并存储在一个 vector 中。
然后,使用两个循环嵌套遍历所有可能的起始位置和四个连续数字的组合。对于每个组合,计算它们的和,并记录最大的和及其对应的起始位置。
最后,输出最大的和及其起始位置。
注意,这里使用了取模运算来处理首尾相连的情况,即当起始位置 i 加上连续数字的索引 j 超过了 N 时,取模 N 来保证索引在合法范围内。起始位置的索引加 1 是因为题目要求的起始位置是从 1 开始计数的。
原文地址: https://www.cveoy.top/t/topic/phi0 著作权归作者所有。请勿转载和采集!