题目:
Problem
有N个数字,从中选择出连续M(L1<=M<=L2)个数,求出他们之和的最大值
Input
本题有多组测试数据。
输入文件第一行有一个数K,表示测试数据的组数。
接下来有K组数据,每组数据第一排有三个数N, L1, L2。
接下来的一行有N个数,每个数之间用一个空格隔开。
1<=L1<=L2<=N, 1<=N<=200000, -2*10^9<=每个数<=2*10^9
Output
一个数字,表示求出来的和的最大值
Sample Input
2
5 1 3
4 -1 2 7 -5
5 3 3
1 2 7 -9 3
Sample Output
92
4
10
我的答案:
#include<stdio.h>
int main()
{
int dataGroup;
int l1,l2,n;
int i,j,k;
int max = 0;
int sum = 0;
int data[20000];
scanf("%d",&dataGroup);
for(;dataGroup > 0;dataGroup--)
{
scanf("%d%d%d",&n,&l1,&l2);
for(i = 0;i < n;i++)
{
scanf("%d",&data[i]);
}
for(j = l1;j <= l2;j++)
{
for(i = 0;i <= n - j;i++)
{
for(k = i;k < i + j;k++)
{
sum += data[k];
}
if(sum > max)
max = sum;
sum = 0;
}
}
printf("%d\n",max);
max = 0;
}
return 0;
}