参考程序:
cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
cin >> N; // 读入盒子数
vector<int> a(N);
for (int i = 0; i < N; ++i) cin >> a[i]; // 读入每个盒子的宝石数
// N >= 3(题目保证),先计算第一个长度为3的窗口和
int curr = a[0] + a[1] + a[2];
int maxSum = curr;
// 滑动窗口:从第4个数开始,每次把窗口向右移动一格
// 新窗口和 = 旧窗口和 + 新进来的数 - 离开的数
for (int i = 3; i < N; ++i) {
curr += a[i]; // 加上新进来的盒子的宝石数
curr -= a[i - 3]; // 减去离开窗口(最左侧)的盒子的宝石数
if (curr > maxSum) maxSum = curr;
}
cout << maxSum << '\n';
return 0;
}