package PAT1007; import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { int k; ArrayList<Integer> al = new ArrayList<>(); Scanner sc = new Scanner(System.in); k = sc.nextInt(); for(int i = 1; i <= k; i++) { al.add(sc.nextInt()); } int sizeArray = al.size(); Integer[] array = al.toArray(new Integer[sizeArray]); int flag = 0; for(int i = 0; i < sizeArray; i++) { if(array[i] > 0) { flag = 1; } } if(flag == 0) { System.out.println("0 " + array[0] + " " + array[sizeArray-1]); return; } maxSubSum2(array); } public static void maxSubSum1(Integer[] array) { int maxSum = Integer.MIN_VALUE; int maxStart = 0, maxEnd = 0; for(int i = 0; i < array.length; i++) { for(int j = 0; j < array.length; j++) { int thisSum = 0; for(int k = i; k <= j; k++) { thisSum += array[k]; } if(thisSum > maxSum) { maxSum = thisSum; maxStart = i; maxEnd = j; } } } System.out.println(maxSum + " " + array[maxStart] + " " + array[maxEnd]); } public static void maxSubSum2(Integer[] array) { int maxSum = Integer.MIN_VALUE; int maxStart = 0, maxEnd = 0; int arrayLen = array.length; for(int i = 0; i < arrayLen; i++) { int thisSum = 0; for(int j = i; j < arrayLen; j++) { thisSum += array[j]; if(thisSum > maxSum) { maxSum = thisSum; maxStart = i; maxEnd = j; } } } System.out.println(maxSum + " " + array[maxStart] + " " + array[maxEnd]); } } /* 10 -5 1 2 3 4 -1 1 -1 -2 -3 5 -1 -2 -3 -4 -5 */ /* C ac code #include <stdio.h> #define MAXSIZE 10001 #define MINVALUE 0x80000000 int main() { int k; int array[MAXSIZE]; int i, j; int thisSum = 0; int maxSum = MINVALUE; int maxStart = 0; int maxEnd = 0; int tmp; int flag = 0; scanf("%d", &k); for(i = 0; i < k; i++) { scanf("%d", &tmp); array[i] = tmp; } maxEnd = k - 1; for(i = 0; i < k; i++) { if(array[i] > 0) { flag = 1; } } for(i = 0; i < k; i++) { thisSum = 0; for(j = i; j < k; j++) { thisSum += array[j]; if(thisSum > maxSum) { maxSum = thisSum; maxStart = i; maxEnd = j; } } } if(maxSum < 0) { printf("0 %d %d\n", array[0], array[k-1]); return 0; } printf("%d %d %d\n", maxSum, array[maxStart], array[maxEnd]); return 0; } */
PAT1007 C accept code
最新推荐文章于 2024-08-07 14:15:51 发布