2022全国高校计算机能力挑战赛【初赛Java组】真题(选择+编程)

闲来无事水一期比赛

选择题

这里主要给出题目,并不包含正确答案。

第一题

第二题

第三题

第四题

第五题

第六题

第七题

第八题

第九题

第十题

第十一题

第十二题

第十三题

第十四题

第十五题

编程题

答案仅供参考!

第一道:

思路:模拟
实现:

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int ans = 0;
        if (a % 2 == 0) {
            for (int i = 2; i <= a; i += 2) {
                int t = 0;
                for (int j = 0; j < i; j++) {
                    t *= 10;
                    t += a;
                }
                ans += t;
            }
        } else {
            for (int i = 1; i <= a; i += 2) {
                int t = 0;
                for (int j = 0; j < i; j++) {
                    t *= 10;
                    t += a;
                }
                ans += t;
            }
        }
        System.out.println(ans);
    }
}

第二题:

思路: 模拟
实现:

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String nums1 = scanner.next();
        String nums2 = scanner.next();
        if (nums1.length() != nums2.length() && nums1.length() != 3 && nums2.length() != 3) {
            System.out.println(2);
            return;
        }
        if (nums1.length() == 3 && nums2.length() != 3) {
            System.out.println(1);
            return;
        }
        if (nums2.length() == 3 && nums1.length() != 3) {
            System.out.println(-1);
            return;
        }
        HashMap<String, Integer> order = new HashMap<>();
        int val = 1;
        order.put("3", val++);
        order.put("4", val++);
        order.put("5", val++);
        order.put("6", val++);
        order.put("7", val++);
        order.put("8", val++);
        order.put("9", val++);
        order.put("T", val++);
        order.put("J", val++);
        order.put("Q", val++);
        order.put("K", val++);
        order.put("A", val++);
        order.put("2", val++);
        String st1 = String.valueOf(nums1.charAt(0)), st2 = String.valueOf(nums2.charAt(0));
        int v1 = order.get(st1), v2 = order.get(st2);
        if (nums1.length() == 3) {
            if (v1 == v2) {
                System.out.println(0);
            } else if (v1 > v2) {
                System.out.println(1);
            } else {
                System.out.println(-1);
            }
        } else {
            if (st1.equals("2") && st2.equals("2")) {
                System.out.println(0);
                return;
            } else if (st1.equals("2")) {
                System.out.println(1);
                return;
            } else if (st2.equals("2")) {
                System.out.println(-1);
                return;
            }
            if (Math.abs(v1 - v2) != 1) {
                System.out.println(2);
                return;
            }
            if (v1 == v2) {
                System.out.println(0);
            } else if (v1 > v2) {
                System.out.println(1);
            } else {
                System.out.println(-1);
            }

        }

    }

}

第三题:

思路:动态规划(01背包问题)
实现:

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int[][] nums = new int[][]{
                {2, 3},
                {3, 3},
                {2, 4},
                {3, 5},
                {5, 4},
                {2, 1},
                {2, 2},
        };
        int[] record = new int[n + 1];
        for (int i = 0; i < nums.length; i++) {
            for (int j = n; j >= nums[i][0]; j--) {
                record[j] = Math.max(record[j], record[j - nums[i][0]] + nums[i][1]);
            }
        }
        System.out.println(record[n]);
    }
}

第四题:

思路:模拟
实现:

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        int len = str.length();
        if (len < 8) {
            System.out.println("NG");
        } else {
            HashSet<Integer> record = new HashSet<>();
            for (int i = 0; i < len; i++) {
                char c = str.charAt(i);
                if (c >= 'A' && c <= 'Z') {
                    record.add(1);
                } else if (c >= 'a' && c <= 'z') {
                    record.add(2);
                } else if (c >= '0' && c <= '9') {
                    record.add(3);
                } else {
                    record.add(4);
                }
                if (record.size() == 1) {
                    System.out.println("NG");
                } else if (record.size() == 2) {
                    System.out.println("MG");
                } else if (record.size() == 3) {
                    System.out.println("VG");
                } else {
                    System.out.println("EG");
                }
            }
        }
    }
}

小尾巴:本次分享只为广大网友更好的学习。
若有侵权或一些不良行为,请联系本人第一时间删除!

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年12月12日
下一篇 2023年12月12日

相关推荐