滑动窗口最大和
有一个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; }