环之最大和
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
int型范围内,将m(m<1000)个数围成一个圈,给定一个数n(n<=m),求连续的n个数使得和最大。输出最大和及始末位置。
-
输入
- 多组测试数据,每组数据首行是两个数m,n,表示m个数,求n个连续最大和。 输出
- 输出三个数:sum,b,e,分别表示最大和,开始位置,结束位置。 样例输入
-
5 3 4 2 3 1 5 4 2 2 3 4 5
样例输出
-
11 5 2 9 3 4
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while(scanner.hasNext())
{
int number=scanner.nextInt();
int count=scanner.nextInt();
long arr[]=new long[number];
for(int i=0;i<number;i++)
{
arr[i]=scanner.nextLong();
}
long max=0;
int start=1;
for(int i=0;i<number;i++)
{
long sum=0;
for(int j=i;j<i+count;j++)
{
if(j>=number)
sum+=arr[j%number];
else
sum+=arr[j];
}
if(max<sum)
{
max=sum;
start=i+1;
}
}
int end=start+count-1;
if(end>number)
end-=number;
System.out.println(max+" "+start+" "+end);
}
}
}