这道题别看题目很难,实际上这题概括一下就是喊你找一个区间并且前缀和最大。
前缀和通用模板在我之前的博客里,这里就不写了。
主要注意求区间的方法,求出来如何计算区间前缀和。
模板如下:
int num = sum[r]-sum[l-1];
求出区间以后去寻找所有区间前缀和的最大值,最后输出。
Code
#include <bits/stdc++.h>
using namespace std;
int sum[10000005];
int main(){
int n,k;
cin >> n >> k;
sum[0] = 0;
for(int i=1;i<=n;i++){
int x;
cin >> x;
sum[i] = sum[i-1]+x;
}
int mx=-1;
for(int i=1;i<=n-k;i++){
int l=i,r=i+k;
int num = sum[r]-sum[l-1];
if(num > mx){
mx = num;
}
}
cout << mx;
return 0;
}