问题描述

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

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

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

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

输入格式

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

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

  接下来包含一个整数 k。

输出格式

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

样例输入

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

样例输出

gggg.

gggg.

ggggg

.ggg.

评测用例规模与约定

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

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

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

package 第十三次模拟;

import java.util.Scanner;

public class Demo9草地 {
public static int[][] bool;
public static int[] start;
public static int[] end;
public static char[][] num ;
public static int k = 0, n = 0, m = 0;
public static int[] x = { 0, 1, 0, -1 };
public static int[] y = { 1, 0, -1, 0 }; public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
n = sc.nextInt();
m = sc.nextInt();
num = new char[n][m];
for (int i = 0; i < n; i++) {
String s = sc.next();
num[i] = s.toCharArray();
}
k = sc.nextInt();
sc.close();
start = new int[m * n];
end = new int[m * n];
int temp = 0;
bool = new int[n][m];
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (num[i][j] == 'g') {
start[temp] = i;
end[temp++] = j;
}
else{
bool[i][j]=-1;
}
}
}
for (int i = 0; i < temp; i++) {
dfs(start[i],end[i],k);
}
for (int i = 0; i < n; i++) {
for (int j = 0; j <m; j++) {
System.out.print(num[i][j]);
}
System.out.println();
}
} public static void dfs(int xx, int yy, int kk) { bool[xx][yy]=kk;
num[xx][yy]='g';
for (int i = 0; i < 4; i++) {
int newx = x[i] + xx;
int newy = y[i] + yy;
if ( newx >= 0 && newy >= 0 && newx < n && newy < m&& kk - 1 > bool[newx][newy]) {
dfs(newx, newy, kk - 1);
}
}
} }

最新文章

  1. BPM配置故事之案例14-数据字典与数据联动
  2. MySql常用数据类型分析
  3. 2017年1月4日-linux学习
  4. 使用HttpClient 4.3.4 自动登录并抓取中国联通用户基本信息和账单数据,GET/POST/Cookie
  5. C语言关键字、标识符和注释
  6. Java 定时任务
  7. 【bzoj1066】[SCOI2007]蜥蜴 网络最大流
  8. poj 3358 Period of an Infinite Binary Expansion
  9. 该优化针对Linux X86_X64环境
  10. [转]NHibernate之旅(8):巧用组件之依赖对象
  11. grok 正则也支持常规正则
  12. 一个大数据方案:基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎
  13. 牛客小白月赛12 F 华华开始学信息学 (分块+树状数组)
  14. MongoDB副本集配置系列七:MongoDB oplog详解
  15. 1. CNN卷积网络-初识
  16. 【转】无后端(nobackend):前端优先的Web开发【译】
  17. MySQL5.5.21图解教程
  18. Haskell语言学习笔记(22)MaybeT
  19. oracle的乐观锁和悲观锁
  20. eclipse查看源代码问题

热门文章

  1. 网站主机技术+linux教程
  2. Flutter中如何使用WillPopScope
  3. 管理环境一:venv
  4. java -&gt;IO流_打印流
  5. Visual C++ 6.0(完整绿色版)的下载、安装和破解(图解)
  6. 00005-js 获取uuid
  7. 根据name获取控件
  8. 我的excel是2003版本的,里边有sheet1、sheet2两个工作表,当使用GetOleDbSchemaTable获取表Schema时,结果是4个,分别为: sheet1 sheet1$ sheet2 sheet2$
  9. 网页导出成word文档的默认视图方式问题
  10. 在DAO的查询操作里,数据库查询到记录,sql语句也成功执行,但是返回的对象是null