算法每一题,成长每一天~
C0E40 整数对最小和
真题链接:【持续更新】2024华为 OD 机试E卷 机考真题库清单(全真题库)
思路
1、 双循环遍历,先求和,再排序
然后找出前 k 个和相加即为结果
Java
package com.ccr.paper_f;
import java.util.Arrays;
import java.util.Scanner;
public class C0E40 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n1 = in.nextInt();
int[] arr1 = new int[n1];
for (int i = 0; i < n1; i++) {
arr1[i] = in.nextInt();
}
int n2 = in.nextInt();
int[] arr2 = new int[n2];
for (int i = 0; i < n2; i++) {
arr2[i] = in.nextInt();
}
int k = in.nextInt();
// 全部求和
int[] sum = new int[n1 * n2];
for (int i = 0; i < n1; i++) {
for (int j = 0; j < n2; j++) {
sum[i * n2 + j] = arr1[i] + arr2[j];
}
}
Arrays.sort(sum);
int kSum = 0;
for (int i = 0; i < k; i++) {
kSum += sum[i];
}
System.out.println(kSum);
}
}
总结
1、如果是要打印满足最小和的 k 个元素对,则可定义一个对象去处理。
算法要多练多练多练!!