资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
输入n个数,围成一圈,求连续m(m<n)个数的和最大为多少?
输入格式
输入的第一行包含两个整数n, m。第二行,共n个整数。
输出格式
输出1行,包含一个整数,连续m个数之和的最大值。
样例输入
10 3
9 10 1 5 9 3 2 6 7 4
样例输出
23
数据规模和约定
0<m<n<1000, -32768<=输入的每个数<=32767。
本题的主要思路是:本来是一个环的问题,我们直接将他简单化,用两个一样的数组构成一个大的数组,这样我们就间接的解决了环的问题。
#include <iostream>
using namespace std;
int arr[2005];
int main()
{
int n,m,i,j;
int sum=0;
int sum2=0;
cin>>n>>m;
for(int i=0;i<n;i++){
cin>>arr[i];
}
for(i=0,j=n;i<n,j<2*n;i++,j++){
arr[j]=arr[i]; //拷贝数组
}
for(int i=0;i<n;i++){
for(int j=i;j<i+m;j++){
sum2+=arr[j];
}
if(sum2>sum){
sum=sum2;
}
sum2=0; //每循环完一次要将sum2重置
}
cout<<sum<<endl;
//cout << "Hello world!" << endl;
return 0;
}