当前位置:   article > 正文

第二届全国高校计算机技能竞赛——Java赛道

第二届全国高校计算机技能竞赛

第二届全国高校计算机技能竞赛——Java赛道

小赛跳高

在这里插入图片描述

签到题

import java.util.*;
public class Main{
	public static void main(String []args) {
		Scanner sc = new Scanner(System.in);
		double n = sc.nextDouble();
		for(int i = 0; i < 4; i++) {
			n = n * 0.9;
		}
		System.out.printf("%.2f", n);
	}
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

找数

在这里插入图片描述

签到题

import java.util.Scanner;
public  class Main{
	public static void main(String []args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		for(int i = 1; i <= n; i++) {
			if((i % 3 == 1) && (i % 5 == 1) && (i % 7 == 1)) {
				System.out.print(i + " ");
			}
		}
	}
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

打分

在这里插入图片描述

签到题
注意cnt等于0的情况
最大值取-0x3f3f3f3f
最小值取0x3f3f3f3f
注意当cnt = 0时,说明无人打出大于0的分数。
此时选手的分数为0分,注意保留2位小数

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int maxsco = -0x3f3f3f3f;
        int minsco= 0x3f3f3f3f;
        int sum = 0;
        int cnt = 0;

        while (n-->0) {
            int sco = sc.nextInt();
            if (sco > 100 || sco < 1) {
                continue;
            }
            sum += sco;
            cnt++;
            if (sco > maxsco) {
                maxsco = sco;
            }
            if (sco < minsco) {
                minsco = sco;
            }
        }
         if(cnt>0) {
        	 System.out.printf("%.2f",(double) (sum - maxsco - minsco) / (cnt - 2));
         }
         else {
        	 System.out.println(0.00);
         } 
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34

找子串

在这里插入图片描述

不断截取子串,判断后,找出最大串和最小串

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.nextLine();
        String minstr = str1;
        String maxstr = "";

        for (int i = 0; i < str1.length(); i++) {
            for (int j = i + 1; j <= str1.length(); j++) {
                String substr = str1.substring(i, j);
                if (substr.compareTo(minstr) < 0) {
                    minstr = substr;
                }
                if (substr.compareTo(maxstr) > 0) {
                    maxstr = substr;
                }
            }
        }

        System.out.println(minstr);
        System.out.println(maxstr);
    }
}


  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

矩阵距离

在这里插入图片描述
在这里插入图片描述

宽搜bfs 队列存点对,往上下左右四个方向搜索
注意初始化所有距离数组dis[][]为-1

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

class Main {
    static final int[][] dt = {{-1, 0}, {0, 1}, {1, 0}, {0, -1}};

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        int m = scanner.nextInt();
        scanner.nextLine(); // 读取换行符

        char[][] g = new char[n][m];
        for (int i = 0; i < n; i++) {
            String line = scanner.nextLine();
            for (int j = 0; j < m; j++) {
                g[i][j] = line.charAt(j);
            }
        }

        bfs(g, n, m);
    }

    static void bfs(char[][] g, int n, int m) {
        int[][] dis = new int[n][m];
        Queue<int[]> q = new LinkedList<>();
        for(int i = 0; i < n;i++) {
        	for(int j = 0; j < m;j++) {
        		dis[i][j] = -1;
        	}
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (g[i][j] == '1') {
                    dis[i][j] = 0;
                    q.offer(new int[]{i, j});
                }
            }
        }

        while (!q.isEmpty()) {
            int[] t = q.poll();
            int x = t[0];
            int y = t[1];

            for (int i = 0; i < 4; i++) {
                int dx = x + dt[i][0];
                int dy = y + dt[i][1];
                if (dx >= 0 && dx < n && dy >= 0 && dy < m && dis[dx][dy] == -1) {
                    dis[dx][dy] = dis[x][y] + 1;
                    q.offer(new int[]{dx, dy});
                }
            }
        }

        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                System.out.print(dis[i][j] + " ");
            }
            System.out.println();
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65

总结

难度中下,签到题3道,medium2道。
总体难度没去年难,考查基础思维。
注意代码实现细节和边界情况

往期回顾

不清楚蓝桥杯考什么的点点下方
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/826318

推荐阅读
相关标签