小明空地种草(暴力破解)
2020-05-11 04:10
537 查看
题目
小明有一块空地,他将这块空地划分为 n 行 m 列的小块,每行和每列的长度都为 1。
小明选了其中的一些小块空地,种上了草,其他小块仍然保持是空地。
这些草长得很快,每个月,草都会向外长出一些,
如果一个小块种了草,则它将向自己的上、下、左、右四小块空地扩展,这四小块空地都将变为有草的小块。
请告诉小明,k 个月后空地上哪些地方有草。
样例输入
[code]4 5 .g... ..... ..g.. ..... 2
样例输出
gggg.
gggg.
ggggg
.ggg.
题目分析
分析题目,想要让最开始的这个月的草在一个月向相邻的地方扩展,那么就需要用一个二维数组模拟上下左右,每个月之后都执行一次这个二维数组,但是每次执行都有条件,不能超过原有的地界(输入的信息可以看成一个二维数组),同时如果扩展的下一个方向字符为 . 那么我们将它变为 g 。
因为给了月份,所以我们上述所需要做的事情就要循环0-(月份-1)次即可。
代码分析
[code]static int k; public static void main(String [] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); // 行 int m = scanner.nextInt(); // 列 char[][] g = new char [m]; // 草 int[][] arr = new int [m]; // 临时 for (int i = 0; i < n; i++) { g[i] = scanner.next().toCharArray(); // 强转字符数组 } k = scanner.nextInt(); int index = 0; int[][] direction = new int[][] { { 0, -1 }, { 0, 1 }, { -1, 0 }, { 1, 0 } }; // 四个方向 while (index < k) { for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (g[i][j] == 'g') { for (int k = 0; k < direction.length; k++) { int x = i + direction[k][0]; int y = j + direction[k][1]; if (x >= 0 && y >= 0 && x < n && y < m && g[x][y] == '.') { arr[x][y] = 1; //标记长草 } } } } } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (arr[i][j] != 0) { g[i][j] = 'g'; // 原来 } } } index++; } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { System.out.print(g[i][j]); } System.out.println(); } }
小剧场:加油!奥利给!
看-清 原创文章 27获赞 1访问量 828 关注 私信相关文章推荐
- 校内模拟赛 C语言 小明种草(小明有一块空地,他将这块空地划分为...)
- 忘记秘密利用python模拟登录暴力破解秘密
- 利用Python暴力破解zip,PDF等一切加密文件!原理真的很简单!
- kali使用aircrack-ng暴力破解密码时,提示bash: aircrack:未找到命令,等解决方案
- linux 防止ssh暴力破解密码
- winRAR 密码暴力破解/清除压缩文件密码工具
- ISCC(web)暴力破解
- pikachu漏洞靶机之暴力破解漏洞(绕过验证码on client)
- 3389多线程暴力破解
- Mysql数据库用户密码暴力破解
- sshd服务防止暴力破解
- burpsuite暴力破解
- aspose-slides-19.6暴力破解,ppt转图片转pdf,仅供学习,不可用于商业用途
- fail2ban-防止用户暴力破解ssh工具
- 关于SSH暴力破解
- WIFI安全测试之WPS(PIN)加密暴力破解
- 暴力破解攻击
- 暴力破解HTTP验证
- 14、单机运行环境搭建之 --Centos6.4下使用Denyhosts禁止针对linux sshd的暴力破解
- 防止SSH暴力破解的脚本