华为OD机试统一考试D卷C卷 - 结队编程
题目描述
某部门计划通过结队编程来进行项目开发,已知该部门有 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 ≤ n ≤ 6000
- 1 ≤ level[i] ≤ 10^5
输出描述
可能结队的小组数量
用例
输出 | 4 |
说明 | 可能结队成的组合(1,2,3)、(1,2,4)、(1,3,4)、(2,3,4) |
输出 | 0 |
说明 | 根据结队条件,我们无法为该部门组建小组 |
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine()); // 员工总数
int[] levels = new int[n]; // 每个员工的职级
String[] inputLevels = sc.nextLine().split(" "); // 每个员工职级的字符串数组
for (int i = 0; i < n; i++) { // 遍历字符串数组
levels[i] = Integer.parseInt(inputLevels[i]); // 将每个员工的职级字符串转换为整数,并存储到levels数组中
}
System.out.println(countTeams(n, levels)); // 调用countTeams方法计算并输出可以结成的队伍数量
}
public static long cou
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
机试E卷D卷刷题日记 文章被收录于专栏
机试刷题记录