华为OD机试 - 结队编程(Java 2024 C卷 100分)

发布于:2024-04-19 ⋅ 阅读:(32) ⋅ 点赞:(0)

在这里插入图片描述

华为OD机试 2024C卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷+C卷)》

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

某部门计划通过结队编程来进行项目开发,已知该部门有 N 名员工,每个员工有独一无二的职级,每三个员工形成一个小组进行结队编程,结队分组规则如下:

从部门中选出序号分别为 i、j、k 的3名员工,他们的职级分别为 level[i],level[j],level[k],结队小组满足 level[i] < level[j] < level[k] 或者 level[i] > level[j] > level[k],其中 0 ≤ i < j < k < n。

请你按上述条件计算可能组合的小组数量。同一员工可以参加多个小组。

二、输入描述

第一行输入:员工总数 n

第二行输入:按序号依次排列的员工的职级 level,中间用空格隔开

三、输出描述

可能结队的小组数量。

1、输入

4
1 2 3 4

2、输出

4

3、说明

可能结队成的组合(1,2,3)、(1,2,4)、(1,3,4)、(2,3,4)

四、解题思路

遍历所有可能的组合,计算符合条件的小组数量。

使用三重循环遍历所有三名员工的组合,检查是否符合结队分组规则。

五、Java算法源码

public class Test01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 读取员工总数和员工的职级
        int n = scanner.nextInt();
        int[] level = new int[n];
        for (int i = 0; i < n; i++) {
            level[i] = scanner.nextInt();
        }

        // 统计可能结队的小组数量
        int count = 0;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                for (int k = j + 1; k < n; k++) {
                    // 判断是否符合结队分组规则
                    if (level[i] < level[j] && level[j] < level[k] || level[i] > level[j] && level[j] > level[k]) {
                        count++;
                    }
                }
            }
        }

        System.out.println(count);
    }
}

六、效果展示

1、输入

4
1 2 3 4

2、输出

4

3、说明

可能结队成的组合(1,2,3)、(1,2,4)、(1,3,4)、(2,3,4)

在这里插入图片描述


🏆下一篇:华为OD机试 - 简易内存池 - 逻辑分析(Java 2024 C卷 200分)

🏆本文收录于,华为OD机试(JAVA)真题(A卷+B卷+C卷)

刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述