20个正整数排成一圈,编写一个c++程序找出连续四个数,其和是最大的并输出最大值
时间: 2024-11-25 12:14:25 浏览: 5
在C++中,你可以使用滑动窗口的思想来解决这个问题。首先,假设数组名为nums,长度为20。创建两个变量,一个用于记录当前找到的最大和sum,另一个用于存储当前滑动窗口的左边界start。
```cpp
#include <vector>
#include <iostream>
int maxSumOfFour(int nums[], int n) {
if (n < 4) {
std::cout << "Invalid input! At least four numbers are required." << std::endl;
return -1; // 或者抛异常
}
int sum = nums[0] + nums[1] + nums[2] + nums[3];
int maxSum = sum;
for (int i = 4; i < n; ++i) {
sum += nums[i] - nums[i-4]; // 更新窗口内的和
maxSum = std::max(maxSum, sum); // 比较当前和与最大和
}
return maxSum;
}
int main() {
std::vector<int> nums = {1, 2, 3, 4, 5, ...}; // 请替换为你要找连续四个数的具体数值
int n = nums.size();
int result = maxSumOfFour(nums.data(), n);
if (result != -1) {
std::cout << "The maximum sum of four consecutive numbers is: " << result << std::endl;
}
return 0;
}
```
在这个程序中,我们从数组的第4个元素开始,每次移动一个位置,更新窗口内的和,并检查是否超过了已知的最大和。注意,如果输入的数组小于4个元素,函数会先检查并给出错误提示。
阅读全文