问题描述
输入n个数,围成一圈,求连续m(m<n)个数的和最大为多少?
输入格式
输入的第一行包含两个整数n, m。第二行,共n个整数。
输出格式
输出1行,包含一个整数,连续m个数之和的最大值。
样例输入
10 3
9 10 1 5 9 3 2 6 7 4
样例输出
23
解题思路:
- 每次遍历三个累加,遍历完i++,遍历n次。
- 当下标超过数组数据长度时,处理环问题。
- 擂台法比较最大
#include<stdio.h>
int main(){
int n,m,i,j,sum;
int max=0;//定义最大值
scanf("%d%d",&n,&m);
int nums[n];
for(i=0;i<n;i++){
scanf("%d",&nums[i]);
}
for(i=0;i<n;i++){//遍历所有输入的数
sum=0;//每一次循环初始化sum=0
for(j=i;j<m+i;j++){//每一次向后移动一位,遍历m位
if(j>n-1){//j超过数组长度时,进行环处理
sum+=nums[j-n];// 环处理
}else{
sum+=nums[j];
}
}
if(sum>max){//擂台法比较最大
max=sum;
}
}
printf("%d",max);
return 0;
}
运行结果:
10 3
9 10 1 5 9 3 2 6 7 4
23
--------------------------------
Process exited after 4.011 seconds with return value 0
请按任意键继续. . .