每日省赛真题解析·第五天
每日省赛真题解析·第五天

每日省赛真题解析·第五天

目录

  • 2020省赛试题E
  • 2020省赛试题F
  • 2020省赛试题G

一.2020省赛试题E

题目链接:排序 – 蓝桥云课 (lanqiao.cn)

题目要求:

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

小蓝最近学习了一些排序算法,其中冒泡排序让他印象深刻。在冒泡排序中,每次只能交换相邻的两个元素。小蓝发现,如果对一个字符串中的字符排序,只允许交换相邻的两个字符, 则在所有可能的排序方案中,冒泡排序的总交换次数是最少的。

例如,对于字符串 lan 排序,只需要 1 次交换。对于字符串 qiao 排序,总共需要 4 次交换。

小蓝找到了很多字符串试图排序,他恰巧碰到一个字符串,需要 100 次交换,可是他忘了吧这个字符串记下来,现在找不到了。请帮助小蓝找一个只包含小写英文字母且没有字母重复出现的字符串,对 该串的字符排序,正好需要 100 次交换。如果可能找到多个,请告诉小蓝最短的那个。如果最短的仍然有多个,请告诉小蓝字典序最小的那个。

解题思路:

最终答案:jonmlkihgfedcba。

代码:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        System.out.println("jonmlkihgfedcba");
    }
}

二.2020省赛试题F

题目链接:成绩分析 – 蓝桥云课 (lanqiao.cn)

题目要求:

小蓝给学生们组织了一场考试,卷面总分为 100 分,每个学生的得分都是一个 0 到 100 的整数。请计算这次考试的最高分、最低分和平均分。

解题思路:

非常简单的一道模拟题。

代码:

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        int n = cin.nextInt();
        int mi = 101 , ma = 0 , sum = 0;
        for(int i = 1 ; i <= n ; i ++){
                   int x ;
                x = cin.nextInt();
                mi = Math.min(mi , x);
                ma = Math.max(ma , x);
                sum += x;
        }
        System.out.println(ma);
        System.out.println(mi);
        System.out.printf("%.2f\n" , 1.0 * sum / n);
        cin.close();
    }
}

三.2020省赛试题G

题目链接:单词分析 – 蓝桥云课 (lanqiao.cn)

题目要求:

小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词,他准备不再完全记忆这些单词,而是根据单词中哪个字母出现得最多来分辨单词。现在,请你帮助小蓝,给了一个单词后,帮助他找到出现最多的字母和这 个字母出现的次数。

解题思路:

又是一道简单的模拟题。

开一个数组存储每个字母出现的次数,然后根据题意简单判断一下即可。或者先求出最大出现次数,再求出出现频率 = 最大出现次数的最小字符。

代码:

import java.util.*;
public class Main {
    private static int[] cnt = new int[30];

    public static void main(String[] args) {
        Scanner cin = new Scanner(System.in);
        String s = cin.next();
        int ch = 0 , ma = 0;
        for (int i = 0 ; i < s.length() ; i ++) {
            cnt[s.charAt(i) - 'a']++;
        }
        for (int j = 0; j < 26; j++) {
            if (ma < cnt[j]) {
                ma = cnt[j];
                ch = j;
            }
        }
        System.out.println((char) (ch + 'a'));
        System.out.println(ma);
    }
}