题解 | #牛牛的数组匹配#
牛牛的数组匹配
https://www.nowcoder.com/practice/3d3406f4a7eb4346b025cc592be5b875
import java.util.Arrays; import java.util.Scanner; // 注意类名必须为 Main, 不要有任何 package xxx 信息 // 注意类名必须为 Main, 不要有任何 package xxx 信息 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 注意 hasNext 和 hasNextLine 的区别 int aLength = in.nextInt(); int bLength = in.nextInt(); int[] a = new int[aLength]; int[] b = new int[bLength]; int sumA = 0; for (int i = 0; i < aLength; i++) { sumA += in.nextInt(); } for (int i = 0; i < bLength; i++) { b[i] = in.nextInt(); } // System.out.println(Arrays.toString(b)); // System.out.println(sumA); int beginAns = 0, endAns = 0; int close = sumA; for (int begin = 0; begin < bLength; begin++) { for (int end = 0; end < bLength; end++) { int sumTemp = getSubSum(b, begin, end); // System.out.println("================="); // System.out.println(sumTemp); int span = Math.abs(sumA - sumTemp); if (close > span) { close = span; beginAns = begin; endAns = end; } } } for (int i = beginAns; i <= endAns; i++) { System.out.print(b[i] + " "); } } public static int getSubSum(int[] arr, int begin, int end) { int sum = 0; for (int i = begin; i <= end; i++) { sum += arr[i]; } return sum; } }