相加之和最大,并给出它们的起始位置
题目描述
有一组数,其排列形式如下: 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个数
输出
第一行有一个数,即最大的和 第二行有一个数,即起始数的位置
样例输出 [复制]
51 1
AC代码:
1 import java.util.Scanner; 2 3 public class Main { 4 5 public static void main(String[] args) { 6 Scanner sc = new Scanner(System.in); 7 int num = sc.nextInt(); 8 if (num < 5 || num > 20) { 9 System.exit(0); 10 } 11 int[] nums = new int[num]; 12 int[] nums2 = new int[num]; 13 for (int i = 0; i < num; i++) { 14 nums[i] = sc.nextInt(); 15 } 16 for (int i = 0; i < nums.length - 3; i++) { 17 int sumOfFour = 0; 18 for (int j = i; j < 4 + i; j++) { 19 sumOfFour += nums[j]; 20 } 21 nums2[i] = sumOfFour; 22 } 23 nums2[num - 3] = nums[num - 3] + nums[num - 2] + nums[num - 1] + nums[0]; 24 nums2[num - 2] = nums[num - 2] + nums[num - 1] + nums[0] + nums[1]; 25 nums2[num - 1] = nums[num - 1] + nums[0] + nums[1] + nums[2]; 26 int max = 0; 27 int index = 0; 28 for (int i = 0; i < nums2.length; i++) { 29 if (nums2[i] > max) { 30 max = nums2[i]; 31 index = i; 32 } 33 } 34 System.out.println(max); 35 System.out.println(index + 1); 36 } 37 }