华为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四种语言的解法。

全部评论

相关推荐

阿里淘天内蓷:虽然很想感谢你的分享,但是此刻的嫉妒和酸气已经涌上心头,所以我撤销一下对你的感谢吧,希望你能原谅我
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务