【基础】相加之和最大,并给出它们的起始位置
题目描述
有一组数,其排列形式如下:
11,19,9,12,5,20,1,18,4,16,6,10,15,2,17,3,14,7,13,8,且尾部8和头部11首尾相连,构成环形的一组数,编程找出相邻的4个数,其相加之和最大,并给出它们的起始位置。
输入
第一行有一个整数n( 5 <= n <= 20 )
第二行有n个数
输出
第一行有一个数,即最大的和
第二行有一个数,即起始数的位置
样例
输入
20
11 19 9 12 5 20 1 18 4 16 6 10 15 2 17 3 14 7 13 8
输出
51
1
提示
如果最大的和有多个,则输出最左边的一个的起始位置
分析如下:
只需要把连续四个数的和计算出来存入一个数组,注意数组中存放和的元素的下标要与其位置对应,找出其中的最大值,让每一个元素的值与最大值进行比较,如果相等输出其值与下标的值,随后直接退出即可。
代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,k,max1=0,n,a[25],b[25];/max1所存放的就是所有连续四个数的和中最大的值
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
a[n+1]=a[1];
a[n+2]=a[2];
a[n+3]=a[3];
for(j=1;j<=n;j++)
{
b[j]=a[j]+a[j+1]+a[j+2]+a[j+3];
}
for(k=1;k<=n;k++)
{
if(b[k]>max1)
max1=b[k];
}
printf("%d\n",max1);
for(i=1;i<=n;i++)
{
if(max1==b[i])
{
printf("%d",i);
break;
}
}
return 0;
}