滑动窗口最大和
有一个N个整数的数组,和一个长度为M的窗口,窗口从数组内的第一个数开始滑动直到窗口不能滑动为止,每次窗口滑动产生一个窗口和(窗口内所有数的和),求窗口滑动产生的所有窗口和的最大值。
#include<iostream>
#include<vector>
#include<string>
using namespace std;
int MaxValue(vector<int> data, int winLen)
{
if (winLen == 0) {
return 0;
}
int count = 0;
for(int i = 0; i < winLen; ++i) {
count += data[i];
}
int out = count;
for (int i = winLen; i < data.size(); ++i) {
count += data[i] - data[i - winLen];
if (out < count) {
out = count;
}
}
return out;
}
int main()
{
int len;
cin >> len;
vector<int> data;
for (int i = 0; i < len; i++) {
int a;
cin>>a;
data.push_back(a);
}
int winLen;
cin >> winLen;
cout << MaxValue(data, winLen)<< endl;
return 0;
}
