题目描述:
链接:https://www.luogu.com.cn/problem/AT2412
输入格式
无
输出格式
无
题意翻译
题意
读入n个整数的数列a1,a2,…,an和正整数k(1<=k<=n),请输出连续排列的k个整数的和的最大值
输入
第一行是正整数n(1<=n<=100000)和正整数k(1<=k<=n) 第二行以后的第1+i(1<=i<=n)至最后一行为数列
输出
仅一行,仅包括最大值。
样例输入
5 3 2 5 -4 10 3
样例输出
11
由 @UMR 提供翻译
输入输出样例
无
#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k;
int ans[100005];//依序保存读入的数
int sum[100005];//保存前多少项的和
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++){
scanf("%d",&ans[i]);
if(i==1){
sum[i]=ans[i];//没有前一项特例
}else{
sum[i]=sum[i-1]+ans[i];
}
}
int maxi=sum[k];//赋初值为前k项和
for(int i=1;i<=n;i++){
if(i+k<=n){//边界最大情况
if(sum[k+i]-sum[i]>maxi){
maxi=sum[k+i]-sum[i];
}//不断更新连续k项最大值
}
}
printf("%d\n",maxi);
return 0;
}
额外注:
scanf(); printf();比cin>>;cout<<;的速度快