当前位置: 首页 > article >正文

蓝桥杯31天真题冲刺|题解报告|第二十三天

大家好,我是snippet,今天是刷蓝桥真题的第二十三天,今天的题基本上都包含搜索,下面是我今天的题解 

目录

一、长草

题目描述

输入描述

输出描述

输入输出样例

运行限制

二、蓝肽子序列

三、迷宫与陷阱

四、送礼物


一、长草

题目链接:长草 - 蓝桥云课 (lanqiao.cn)

题目内容:

题目描述

小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1。

小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。

这些草长得很快,每个月,草都会向外长出一些,如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,

这四小块空地都将变为有草的小块。请告诉小明,k 个月后空地上哪些地方有草。

输入描述

输入的第一行包含两个整数 n,m。

接下来 n 行,每行包含 m 个字母,表示初始的空地状态,字母之间没有空格。如果为小数点,表示为空地,如果字母为 g,表示种了草。

接下来包含一个整数 k。 其中,2≤n,m≤1000,1≤k≤1000。

输出描述

输出 n 行,每行包含 m 个字母,表示 k 个月后空地的状态。如果为小数点,表示为空地,如果字母为 g,表示长了草。

输入输出样例

示例

输入

4 5
.g...
.....
..g..
.....
2

输出

gggg.
gggg.
ggggg
.ggg.

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 256M

解题思路:

这个题感觉跟灌溉差不多,可以直接用dfs

代码:

package 蓝桥杯31天真题冲刺.Day23;

import java.io.*;

/**
 * @author snippet
 * @data 2023-03-26
 * 长草-蓝桥云课
 */
public class T1_长草 {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

    static int n,m,k;
    static int N = 1010;
    static char[][] c = new char[N][N];
    static boolean[][] is = new boolean[N][N];
    static int[] dx = {0, 0, -1, 1};
    static int[] dy = {1, -1, 0, 0};

    static void dfs(int x, int y) {
        for (int i = 0; i < 4; i++) {
            if ((x + dx[i]) > 0 && (x + dx[i]) <= n && (y + dy[i]) > 0 && (y + dy[i]) <= m && c[x+dx[i]][y+dy[i]] == '.' && !is[x+dx[i]][y+dy[i]]) {
                c[x+dx[i]][y+dy[i]] = 'g';
                is[x+dx[i]][y+dy[i]] = true;
            }
        }
    }

    public static void main(String[] args) throws IOException {
        String[] s = br.readLine().split(" ");
        n = Integer.parseInt(s[0]);
        m = Integer.parseInt(s[1]);
        for (int i = 1; i <= n; i++) {
            s = br.readLine().split(" ");
            for (int j = 1; j <= m; j++) {
                c[i][j] = s[0].charAt(j-1);
            }
        }
        k = Integer.parseInt(br.readLine().split(" ")[0]);
        while (k-- > 0) {
            for (int i = 1; i <= n; i++) {
                for (int j = 1; j <= m; j++) {
                    if (c[i][j] == 'g'&& !is[i][j]) {
                        is[i][j] = true;
                        dfs(i, j);
                    }
                }
            }
            is = new boolean[N][N];
        }
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= m; j++) {
                if (c[i][j] == 'g') pw.print('g');
                else pw.print('.');
            }
            pw.println();
        }
        pw.flush();
        br.close();
    }
}

二、蓝肽子序列

题目链接:蓝肽子序列 - 蓝桥云课 (lanqiao.cn)

三、迷宫与陷阱

题目链接:迷宫与陷阱 - 蓝桥云课 (lanqiao.cn)

四、送礼物

题目链接:送礼物 - 蓝桥云课 (lanqiao.cn)


http://www.kler.cn/a/5852.html

相关文章:

  • 9.4 visualStudio 2022 配置 cuda 和 torch (c++)
  • moviepy 将mp4视频文件提取音频mp3 - python 实现
  • java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
  • uml活动图和用例图之间有一致性要求吗
  • 是德科技M9010A PXIe 机箱+M9037A模块,台式应用的理想之选
  • linux centos挂载未分配的磁盘空间
  • Python中编码【encode】解码【decode】讲解
  • k8s qos等级
  • 【Windows版】VScode配置C++开发环境
  • Python实现提前查询考研成绩
  • 大家有没有时候觉得,递归,分治,回溯,傻傻分不清楚?
  • 设计LFU缓存结构(美团面试算法题)
  • 骨传导蓝牙耳机什么牌子,推荐几款比较热销的骨传导耳机
  • 【Elastic (ELK) Stack 实战教程】04、ElasticSearch 集群进阶及优化
  • Java-双向链表的实现
  • 【软件设计师03】数据库系统
  • 电路板焊接技巧实践(没有电烤箱条件下)
  • 人工智能交互革命:探索ChatGPT的无限可能 第13章ChatGPT的应用场景和创新应用
  • 智慧办公抉择之——VBA与Python的选择
  • MySQL尚硅谷学习笔记之DQL语言
  • QT开发笔记(USB Bluetooth)
  • 【新2023Q2模拟题JAVA】华为OD机试 - 快递业务站
  • 使用AXI4总线控制MMCM时钟模块
  • python编程:判断一个数是否是超级素数
  • 解决AJAX在后台使用PHP,ASP,JSP返回数据出现中文乱码的问题
  • 算法训练:贪心与回溯