现在有若干支队伍进行比赛,如果出现平局,那么各得1分,如果分出了胜负,那么胜方得3分,败方得0分。 如果说有三只队伍,并且得分都是3,那么有下面两种可能: 一支队伍胜利,另外两支队伍平局; - 两支队伍胜利,另外一支队伍失败。 现在给出n支队伍的最终得分,即所有比赛已经结束,求有多少种可能。 输入 第一行包含一个正整数n,队伍的个数。(n<=8) 第二行包含n个非负整数,即每支队伍的最终得分. 输出 输出一个整数表示答案 用java写
时间: 2024-03-01 21:51:50 浏览: 113
以下是Java代码实现:
```java
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] scores = new int[n];
for (int i = 0; i < n; i++) {
scores[i] = sc.nextInt();
}
Arrays.sort(scores); // 将得分从小到大排序,方便后续处理
int count = 0;
for (int i = 0; i < n; i++) { // 枚举得分最高的队伍
if (scores[i] < 3) { // 如果得分最高的队伍得分小于3,直接跳过
continue;
}
for (int j = 0; j < n; j++) { // 枚举得分次高的队伍
if (i == j || scores[j] < 3) { // 如果是同一支队伍或得分小于3,直接跳过
continue;
}
for (int k = 0; k < n; k++) { // 枚举得分第三高的队伍
if (i == k || j == k || scores[k] < 3) { // 如果是同一支队伍或得分小于3,直接跳过
continue;
}
if ((scores[i] == scores[j] + scores[k]) || (scores[j] == scores[i] + scores[k] || (scores[k] == scores[i] + scores[j]))) {
// 判断是否存在一种可能
count++;
}
}
}
}
System.out.println(count);
}
}
```
解释:
首先读入队伍个数n和每支队伍的得分scores数组。
将scores数组从小到大排序,方便后续处理。
接着枚举最高分数的队伍i,次高分数的队伍j和第三高分数的队伍k。
如果i,j,k不是同一支队伍且得分都大于等于3,那么就判断是否存在一种可能。
最后输出可能的数量即可。