问题描述

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

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

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

  请告诉小明,k 个月后空地上哪些地方有草。

输入格式

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

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

  接下来包含一个整数 k。

输出格式

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

样例输入

  1. 4 5
  2. .g...
  3. .....
  4. ..g..
  5. .....
  6. 2

样例输出

gggg.

gggg.

ggggg

.ggg.

评测用例规模与约定

  对于 30% 的评测用例,2 <= n, m <= 20。

  对于 70% 的评测用例,2 <= n, m <= 100。

  对于所有评测用例,2 <= n, m <= 1000,1 <= k <= 1000。

  1. package 第十三次模拟;
  2. import java.util.Scanner;
  3. public class Demo9草地 {
  4. public static int[][] bool;
  5. public static int[] start;
  6. public static int[] end;
  7. public static char[][] num ;
  8. public static int k = 0, n = 0, m = 0;
  9. public static int[] x = { 0, 1, 0, -1 };
  10. public static int[] y = { 1, 0, -1, 0 };
  11. public static void main(String[] args) {
  12. Scanner sc = new Scanner(System.in);
  13. n = sc.nextInt();
  14. m = sc.nextInt();
  15. num = new char[n][m];
  16. for (int i = 0; i < n; i++) {
  17. String s = sc.next();
  18. num[i] = s.toCharArray();
  19. }
  20. k = sc.nextInt();
  21. sc.close();
  22. start = new int[m * n];
  23. end = new int[m * n];
  24. int temp = 0;
  25. bool = new int[n][m];
  26. for (int i = 0; i < n; i++) {
  27. for (int j = 0; j < m; j++) {
  28. if (num[i][j] == 'g') {
  29. start[temp] = i;
  30. end[temp++] = j;
  31. }
  32. else{
  33. bool[i][j]=-1;
  34. }
  35. }
  36. }
  37. for (int i = 0; i < temp; i++) {
  38. dfs(start[i],end[i],k);
  39. }
  40. for (int i = 0; i < n; i++) {
  41. for (int j = 0; j <m; j++) {
  42. System.out.print(num[i][j]);
  43. }
  44. System.out.println();
  45. }
  46. }
  47. public static void dfs(int xx, int yy, int kk) {
  48. bool[xx][yy]=kk;
  49. num[xx][yy]='g';
  50. for (int i = 0; i < 4; i++) {
  51. int newx = x[i] + xx;
  52. int newy = y[i] + yy;
  53. if ( newx >= 0 && newy >= 0 && newx < n && newy < m&& kk - 1 > bool[newx][newy]) {
  54. dfs(newx, newy, kk - 1);
  55. }
  56. }
  57. }
  58. }

Java实现蓝桥杯模拟空地长草的更多相关文章

  1. Java实现蓝桥杯模拟组织晚会

    问题描述 小明要组织一台晚会,总共准备了 n 个节目.然后晚会的时间有限,他只能最终选择其中的 m 个节目. 这 n 个节目是按照小明设想的顺序给定的,顺序不能改变. 小明发现,观众对于晚上的喜欢程度 ...

  2. Java实现蓝桥杯模拟递增的数

    问题描述 一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的数,例如1135是一个数位递增的数,而1024不是一个数位递增的数. 给定正整数 n,请问在整数 1 至 n 中有多少个数 ...

  3. Java实现蓝桥杯模拟正整数序列的数量

    问题描述 小明想知道,满足以下条件的正整数序列的数量: 1. 第一项为 n: 2. 第二项不超过 n: 3. 从第三项开始,每一项小于前两项的差的绝对值. 请计算,对于给定的 n,有多少种满足条件的序 ...

  4. Java实现蓝桥杯模拟元音单词的验证

    问题描述 小明对类似于 hello 这种单词非常感兴趣,这种单词可以正好分为四段,第一段由一个或多个辅音字母组成,第二段由一个或多个元音字母组成,第三段由一个或多个辅音字母组成,第四段由一个或多个元音 ...

  5. Java实现蓝桥杯模拟存储转换

    问题描述 在计算机存储中,15.125GB是多少MB? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. pac ...

  6. Java实现蓝桥杯模拟约数的个数

    问题描述 1200000有多少个约数(只计算正约数). 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. pac ...

  7. Java实现蓝桥杯模拟递增三元组

    问题描述 在数列 a[1], a[2], -, a[n] 中,如果对于下标 i, j, k 满足 0<i<j<k<n+1 且 a[i]<a[j]<a[k],则称 a ...

  8. Java实现蓝桥杯模拟带九9的数的个数

    问题描述 在1至2019中,有多少个数的数位中包含数字9? 注意,有的数中的数位中包含多个9,这个数只算一次.例如,1999这个数包含数字9,在计算只是算一个数. 答案提交 这是一道结果填空的题,你只 ...

  9. Java实现蓝桥杯模拟树的叶结点数量

    问题描述 一棵包含有2019个结点的树,最多包含多少个叶结点? 答案提交 这是一道结果填空的题,你只需要算出结果后提交即可.本题的结果为一个整数,在提交答案时只填写这个整数,填写多余的内容将无法得分. ...

随机推荐

  1. Excel+Word:Jupyter

    直接打开Excel,可以增改删,但如果只是查了?Jupyter Lab/Jupyter Notebook是件利器. 工作内容之一,是复制Excel的一条记录,姓名.身份证号.银行卡号,粘贴在Word的 ...

  2. Queue-PriorityQueue源码解析

    Queue队列通常是先进先出(FIFO),但也有特殊的非FIFO,如本文也分析的PriorityQueue. Queue接口 Queue接口定义的方法: 添加元素接口: add(E e) -> ...

  3. mybatis association的使用

    在上一篇文章中介绍了collection的使用以及java bean,表的结构,今天进行association使用的学习,在多对一的映射关系中,查询到多的一方顺带查询出一的一方是常见的!在此例子中,在 ...

  4. docker 垃圾回收机制

    docker垃圾回收机制 作者: 张首富 时间: 2019-04-10 个人博客: www.zhangshoufu.com QQ群: 895291458 说明 对于Docker来说,存在镜像/容器/存 ...

  5. 一个文件搞定Asp.net core 3.1动态页面转静态页面

    最近一个Asp.net core项目需要静态化页面,百度查找了一下,没有发现合适的.原因如下 配置麻烦. 类库引用了第三方类,修改起来麻烦. 有只支持MVC,不支持PageModel. 继承Actio ...

  6. JUC整理笔记二之聊聊volatile

    要想学好JUC,还得先了解 volatile 这个关键字.了解 volatile ,我们从一个例子开始吧. 本文不会很详细去说java内存模型,只是很简单地学习一下volatile 一个例子 pack ...

  7. Nginx 实现 HTTPS(基于 Let's Encrypt 的免费证书)

    SSL / TLS加密会为您的用户带来更高的搜索排名和更好的安全性. Let’s Encrypt 是一个认证机构(CA).它可以提供免费证书,并且已经被大多数浏览器所信任.另外,通过工具 Certbo ...

  8. 如何使用git命令行上传项目到github

    第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建. 现在我通过命令行在桌面新建一个TEST文件夹(你也 ...

  9. Kubernetes基本概念与架构

    Kubernetes,面向云原生应用的新“云平台” Kubernetes:以google Brog为原型 Kubernetes的成长历程: l  2014年,Kubernetes正式由google开源 ...

  10. Springboot整合MybatisPlus(超详细)完整教程~

    新建springboot项目 开发工具:idea2019.2,maven3 pom.xml <dependency> <groupId>org.springframework. ...