7.23 科大讯飞笔试 第三题

import java.util.*;

public class Main {

    static HashSet<String> set = new HashSet<>();
    static String[] teams = {"a", "b", "c", "d", "e"};

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int num = scanner.nextInt();
        StringBuilder sb = new StringBuilder("[");
        for (int i = 0; i < 5; i++) {
            sb.append(scanner.nextInt());
            if (i != 4) {
                sb.append(",").append(" ");
            }
        }
        sb.append("]");
        HashMap<String, Integer> map = new HashMap<>();
        map.put("a", 0);
        map.put("b", 0);
        map.put("c", 0);
        map.put("d", 0);
        map.put("e", 0);
        competition(0, 1, map, 0);

        String ans = "";
        if (num == set.size()) {
            ans += "yes";
        } else {
            ans += "no";
        }
        ans += " ";
        if (set.contains(sb.toString())) {
            ans += "yes";
        } else {
            ans += "no";
        }
        System.out.println(ans);
    }

    private static void competition(int i, int j, HashMap<String, Integer> map, int count) {
        if (count == 10) {
            Collection<Integer> values = map.values();
            Integer[] array = values.toArray(new Integer[]{});
            Arrays.sort(array, (o1, o2) -> o2 - o1);
            set.add(Arrays.toString(array));
            return;
        }
        String team1 = teams[i];
        String team2 = teams[j];

        map.put(team1, map.getOrDefault(team1, 0) + 3);
        competition(j == 4 ? i + 1 : i, j == 4 ? i + 2 : j + 1, new HashMap<>(map), count + 1);
        map.put(team1, map.getOrDefault(team1, 0) - 3);

        map.put(team1, map.getOrDefault(team1, 0) + 1);
        map.put(team2, map.getOrDefault(team2, 0) + 1);
        competition(j == 4 ? i + 1 : i, j == 4 ? i + 2 : j + 1, new HashMap<>(map), count + 1);
        map.put(team1, map.getOrDefault(team1, 0) - 1);
        map.put(team2, map.getOrDefault(team2, 0) - 1);

        map.put(team2, map.getOrDefault(team2, 0) + 3);
        competition(j == 4 ? i + 1 : i, j == 4 ? i + 2 : j + 1, new HashMap<>(map), count + 1);
        map.put(team2, map.getOrDefault(team2, 0) - 3);
    }

}
大佬们看看,这个代码对不对?

#笔试##科大讯飞#
全部评论
你瞅瞅集合里是355个元素不,是的话应该就是对的。思路就是这样
点赞 回复 分享
发布于 2022-07-23 22:16

相关推荐

04-08 10:36
已编辑
华南理工大学 C++
点赞 评论 收藏
分享
05-01 22:41
中南大学 Java
点赞 评论 收藏
分享
评论
4
10
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务