博客
关于我
第十一届蓝桥杯软件类C/C++大学B组省赛
阅读量:771 次
发布时间:2019-03-23

本文共 3125 字,大约阅读时间需要 10 分钟。

第十一届蓝桥杯大赛软件类省赛C/C++大学B组试题分析

作为一名技术人员,我有幸参与了第十一届蓝桥杯大赛软件类省赛C/C++大学B组的比赛。这场比赛不仅锻炼了我的编程能力,还让我深刻体会到了编写高效代码的重要性。以下是我对观察到的几道题目的分析和解决方案。


题目一:基于循环的数学模型

给定一个初始值 tot = 10000 以及一个布尔变量 go,我们需要通过循环操作来最终计算出一个答案。

解决思路:

  • gotrue 时,我们将 tot 减少 600,直到 tot 达到 600 以下。在这一轮循环中,我们还需要将 go 设为 false,以便进入下一步。
  • gofalse 时,我们将 tot 增加 300,并将 go 设为 true,这样就进入了下一轮循环。
  • 在每次循环结束后,我们将一个计数器 ans 递增 1。
  • 最终,我们需要对最终的 ans 进行处理,将其乘以 60 并加上 tot 除以 10 的结果作为最终输出。

    解决代码:

    public class Main {    public static void main(String[] args) {        int tot = 10000;        boolean go = true;        int ans = 0;        while (true && tot >= 0) {            if (go) {                if (tot - 600 < 0) break;                tot -= 600;                go = false;            } else {                tot += 300;                go = true;            }            ans++;        }        System.out.println(ans * 60 + tot / 10);    }}

    题目二:时间计算

    给定两个日期格式为 “yyyy-MM-dd HH:mm:ss”,我们需要计算两个日期之间的时间差,并以秒为单位输出结果。

    解决思路:

  • 使用 SimpleDateFormat 解析两个日期字符串,分别转换为 Date 对象。
  • 调用 getTime() 方法将日期转换为毫秒数。
  • 计算两个日期的时间差,并将其转换为秒(需要除以 60000)。
  • 输出结果。
  • 解决代码:

    import java.text.SimpleDateFormat;import java.util.Date;public class Main {    public static void main(String[] args) throws Exception {        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");        Date begin = sdf.parse("1921-7-23 12:00:00");        Date end = sdf.parse("2020-7-1 12:00:00");        long ans = end.getTime() - begin.getTime();        ans /= 60000;        System.out.println(ans);    }}

    题目三:数组填数

    给定一个 n x m 的二维数组 dpdp[1][1] 的值为 1。我们需要根据一定规则填充其他单元格的值。

    解决思路:

  • 初始化 dp[1][1] 为 1。
  • 遍历数组,对于每一个位置 dp[i][j],如果其当前位置是奇数行或奇数列,则将它的值加上从上方或左方转移的值。
  • 最终输出 dp[n][m] 的值。
  • 解决代码:

    import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        int n = in.nextInt();        int m = in.nextInt();        int[][] dp = new int[n + 5][m + 5];        dp[1][1] = 1;        for (int i = 1; i <= n; i++) {            for (int j = 1; j <= m; j++) {                if ((i & 1) == 1 || (j & 1) == 1) {                    dp[i][j] += dp[i][j - 1] + dp[i - 1][j];                }            }        }        System.out.println(dp[n][m]);    }}

    题目四:多位数转换

    给定一个字符串输入,我们需要将其转换为对应的一个多位数。

    解决思路:

  • 遍历字符串中的每一个字符。
  • 对于每个字符,如果它是数字字符,则将其转换为对应的数字字符并重复其数量。
  • 如果是非数字字符,则直接输出前一个字符。
  • 最后处理特殊情况(如单字符输入)。
  • 解决代码:

    import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner in = new Scanner(System.in);        String s = in.nextLine();        char[] a = s.toCharArray();        StringBuilder ans = new StringBuilder();        for (int i = 1; i < a.length; i++) {            if (a[i] >= '2' && a[i] <= '9') {                for (int j = 0; j < a[i] - '0'; j++) {                    ans.append(a[i - 1]);                }            } else if (a[i - 1] < '2' || a[i - 1] > '9') {                ans.append(a[i - 1]);            }        }        if (a.length == 1) {            ans.append(a[0]);        }        System.out.println(ans.toString());    }}

    总结

    这些题目涵盖了循环、日期计算、数组填数以及字符串处理等多个技术内容。通过深入分析每一道题目的解法,我不仅提升了自己的编程能力,也更好地理解了如何在复杂环境中高效解决问题。希望未来能在更多的竞赛中继续挑战自己!

    转载地址:http://kqhzk.baihongyu.com/

    你可能感兴趣的文章
    MySQL 报错:Duplicate entry 'xxx' for key 'UNIQ_XXXX'
    查看>>
    Mysql 拼接多个字段作为查询条件查询方法
    查看>>
    mysql 排序id_mysql如何按特定id排序
    查看>>
    Mysql 提示:Communication link failure
    查看>>
    mysql 插入是否成功_PDO mysql:如何知道插入是否成功
    查看>>
    Mysql 数据库InnoDB存储引擎中主要组件的刷新清理条件:脏页、RedoLog重做日志、Insert Buffer或ChangeBuffer、Undo Log
    查看>>
    mysql 数据库中 count(*),count(1),count(列名)区别和效率问题
    查看>>
    mysql 数据库备份及ibdata1的瘦身
    查看>>
    MySQL 数据库备份种类以及常用备份工具汇总
    查看>>
    mysql 数据库存储引擎怎么选择?快来看看性能测试吧
    查看>>
    MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作
    查看>>
    MySQL 数据库的高可用性分析
    查看>>
    MySQL 数据库设计总结
    查看>>
    Mysql 数据库重置ID排序
    查看>>
    Mysql 数据类型一日期
    查看>>
    MySQL 数据类型和属性
    查看>>
    mysql 敲错命令 想取消怎么办?
    查看>>
    Mysql 整形列的字节与存储范围
    查看>>
    mysql 断电数据损坏,无法启动
    查看>>
    MySQL 日期时间类型的选择
    查看>>