华为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机试题库D卷 文章被收录于专栏

本专栏给大家提供了华为2024最新华为OD(D)卷的题目汇总。华为OD机试刷题记录机考算法题库,帮助你上岸华为。提供C++/Java、JavaScript、Python四种语言的解法。

全部评论

相关推荐

华为 od 华为od卡薪资涨幅投递了华为od,现在第一轮资面结束了,hr告诉我卡了薪资涨幅,就是因为我现在这份国企工作的工资增长30%也达不到d1的最低框架8K,现在怎么办,兄弟们遇到过这种情况么。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务