华为OD机试统一考试D卷C卷 - 田忌赛马
题目描述
给定两个只包含数字的数组a, b, 调整数组a里面数字的顺序,使得尽可能多的a[i] > b[i]。数组a和b中的数字各不相同。 输出所有可以达到最优结果的a数组数量
输入描述
输入的第一行是数组a中的数字,其中只包含数字,每两个数字之间相隔一个空格,a数组大小不超过10
输入的第一行是数组b中的数字,其中只包含数字,每两个数字之间相隔一个空格,b数组大小不超过10
输出描述
输出所有可以达到最优结果的a数组数量
用例1
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
11 8 20
10 13 7
输出
1
说明
最优结果只有一个,a = [11, 20, 8],故输出1
用例2
输入
11 12 20
10 13 7
输出
2
说明
有两个a数组的排列可以达到最优结果,[12, 20, 11]和[11, 20, 12],故输出2
用例3
输入
1 2 3
4 5 6
输出
6
说明
a无论如何都会全输,故a任意排列都行,输出所有a数组的排列,6种排法
Java
import java.util.Arrays;
import java.util.Scanner;
public class Main {
// 存储最大匹配对的数量
private static int maxMatch = 0;
// 存储达到最大匹配对数量的排列数量
private static int optimalArrangements = 0;
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// 从标准输入读取两行,将每行的字符串分割并转换成整数数组
int[] a = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int[] b = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
// 调用解决方案并输出最优排列数量
solve(a, b);
System.out.println(optimalArrangements);
}
private static void solve(int[] a, int[] b) {
// 对数组b进行排序,以便后续比较
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2024华为OD机试E卷D卷题 文章被收录于专栏
本专栏给大家提供了华为2024最新华为OD(D)卷的题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。