2019蓝桥杯每周一题第二周之Mineweep(扫雷)

写在开头:

写这个题的时候真的是一次次的纠错,题不难,里面的逻辑关系有复杂,每一次都以为会运行正确了,结果又一个小地方出错,写了一上午还是有问题,满屏的if …if看得头都大了,看了官方的题解,真的是自愧不如。

题目

[问题描述]

Have you ever played Minesweeper? It’s a cute little game which comes within a certain OperatingSystem which name we can’t really remember. Well, the goal of the game is to find where are all the mines within a M × N field. To help you, the game shows a number in a square which tells you how many mines there are adjacent to that square. For instance, supose the following 4 × 4 field with 2 mines (which are represented by an ‘’ character):…If we would represent the same field placing the hint numbers described above, we would end upwith:10022101101110As you may have already noticed, each square may have at most 8 adjacent squares.
//你玩过扫雷吗?这是一个可爱的小游戏,在一个特定的操作系统,我们不能真正记住的名字。好吧,游戏的目标是找出M×N区域内的所有地雷。为了帮助你,游戏在一个正方形里显示一个数字,告诉你这个正方形附近有多少地雷。例如,在下面的4×4区域中加上2个地雷(用“”字符表示):……………如果我们要表示放置上述提示号的同一个区域,我们将以:10022101101110结束,正如您可能已经注意到的,每个正方形最多可以有8个相邻的正方形。

[输入]

The input will consist of an arbitrary number of fields. The first line of each field contains two integersn and m (0 < n, m ≤ 100) which stands for the number of lines and columns of the field respectively.The next n lines contains exactly m characters and represent the field.Each safe square is represented by an ‘.’ character (without the quotes) and each mine squareis represented by an ‘’ character (also without the quotes). The first field line where n = m = 0represents the end of input and should not be processed.
//输入将包含任意数量的字段。每个字段的第一行包含两个整数n和m(0<n,m≤100),分别表示字段的行数和列数。接下来的n行正好包含m个字符并表示该字段。每个安全正方形由一个“.”字符(不带引号)表示,每个挖掘正方形由一个“
”表示字符(也不带引号)。第一个字段行,其中n=m=0表示输入结束,不应进行处理。

[输出]

对于每对整数 i 和 j,按原来的顺序输出 i 和 j,然后输出二者之间的整数中的最大循环节长度。这三个整数应该用单个空格隔开,且在同一行输出。对于读入的每一组数据,在输出中应位于单独的一行。

[样例输入]

4 4


.


3 5
**…

.*…
0 0

[样例输出]

Field #1:
100
2210
1
10
1110
Field #2:
**100
33200
1*100
*/

想法:

虽然我的代码没能坚持到我把它完成出来,就被我的耐心给打败了,但是我的想法还是有的,首先我先定义了一个二维的char数组,用于存放,用嵌套的两个for循环输入读取,读取用的是外部循环放一个String s=sc.next();内部循环放一个s.charAt(j),接下来就是判断各种周围有没有 * ,并输出个数;其中我觉得我很傻的就是:在官方题解中,直接就输出了数字或者 * ,我还把判断出来的这个数又存到了数组中,最后才遍历输出的,这其中还用到了int型数字转换为char型数字,但最后打败我的是,每次都会把周围的 * 读少,而且看题解的时候,发现自己还少实现了两个功能,一个是需要一直输入,另一个是该点是 * 就直接输出 * ,最后真的是不想再改了,所以还是得多看题,看清题!!!

代码:

import java.util.Scanner;public class week2_01 {private static void deal(char[][] data, int n, int m) {   //解题的方法//查找数组内的各个‘*’,直接输出‘*’for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (data[i][j] == '*') {System.out.print("*"); //根据题意‘*’,直接输出continue;   //中断本次循环,继续下一次循环,是‘*’的就直接输出了,就不需要统计旁边有多少个‘*’}int count = 0;   //查找的点的旁边有多少个‘*’//查找的点的周围的八个点for (int k = i - 1; k <= i + 1; k++) {for (int l = j - 1; l <= j + 1; l++) {//避免数组越界,确定数组下标存在if (k >= 0 && k < n && l >= 0 && l < m && data[k][l] == '*') {count++;}}}System.out.print(count); //将周围的地雷数直接输出,不需要存入数组,再输出数组}System.out.println();}}public static void main(String args[]) {Scanner sc = new Scanner(System.in);int count = 1;   //输出的格式,Field# 1,2while (true) {int m = sc.nextInt();int n = sc.nextInt();sc.nextLine();if (m == 0 && n == 0)break;char[][] c = new char[m][n];for (int i = 0; i < m; i++) {c[i] = sc.nextLine().toCharArray();  //将输入的字符串转换为字符数组}if (count > 1) {System.out.println();}System.out.println("Field#" + count + ":");deal(c, m, n);count++;}}
}

结束语:

可能还是写的太少了,没经验,没水平。

2019蓝桥杯每周一题第二周之Mineweep(扫雷)相关推荐

  1. 蓝桥杯 每周一练 第一周(3n+1问题)

    [问题描述] 考虑如下的序列生成算法:从整数 n 开始,如果 n 是偶数,把它除以 2:如果 n 是奇数,把它乘 3 加1. 用新得到的值重复上述步骤,直到 n = 1 时停止.例如,n = 22 时 ...

  2. 4.python蓝桥杯模拟题 一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边)

    4.python蓝桥杯模拟题 一个包含有2019个结点的有向图,最多包含多少条边?(不允许有重边) 1.用n表示图中顶点的数目,e表示边或者弧的数目,则对于无向图来说,e的取值范围为0-(1/2)n( ...

  3. 思特奇杯·云上蓝桥 -算法 集训营第二周

    思特奇杯·云上蓝桥 -算法 集训营第二周 1. 带分数 题目描述 解法一 解题思路 python代码 2. 李白打酒 题目描述 解法一 解题思路 python代码 3. 第 39 级台阶 题目描述 解 ...

  4. 2019蓝桥杯国赛总结

    5月24号我们激动地乘着火车向北京出发了,时隔七个多小时,大概下午两点我们抵达北京西站,然后去石景山西黄村附近找个宾馆住下来,夏天的炎热在那天似乎在欢呼着我们的到来,那天下午显的格外热,我们同行十几人 ...

  5. 第十届蓝桥杯真题题解

    目录 一.组队(DFS) 二.年号字串(进制转换) 三.数列求值 四.数的分解 五.迷宫(BFS) 六.特别数的和(暴力) 七.完全二叉树的权值 一.组队(DFS) 题目描述 本题为填空题,只需要算出 ...

  6. 蓝桥杯真题2017-2021

    刷完近几年真题,感觉理解完之后,拿奖问题不大,本人这次获得2022年蓝桥杯javaB组省一,以下是历年javaB组省赛题目. 文章目录 2017年真题 一.购物单 二.纸牌三角形 三.承压计算 四.魔 ...

  7. 2019蓝桥杯A组C++题目

    2019 蓝桥杯 A组题目解析 试题A:平方和 [问题描述] 小明对数位中含有 2.0.1.9 的数字很感兴趣,在 1 到 40 中这样的数包括 1.2.9.10 至 32.39 和 40,共 28 ...

  8. 2016年第七届蓝桥杯真题解析JavaC组

    相关题目: 2016年第七届蓝桥杯真题解析JavaB组 2016年第七届蓝桥杯真题解析JavaC组 2017年第八届蓝桥杯真题解析JavaB组 2017年第八届蓝桥杯真题解析JavaC组 2018年第 ...

  9. 蓝桥杯模拟赛第二场(web)

    文章目录 蓝桥杯模拟赛第二场(web) 1 卡片化标签页 2 随机数生成器 3 个人博客 4 学生成绩统计 5 水果摆盘 6 给页面化个妆 7 小兔子爬楼梯 8 时间管理大师 9 购物车 10 菜单树 ...

最新文章

  1. python人工智能-马哥教育官网-专业Linux培训班,Python培训机构
  2. 92.芯片组 93.北桥 94.南桥
  3. jsp到java xml配置,JSP中web配置:web.xml
  4. 东南大学2004年程序设计第一届初赛解题报告
  5. 安卓学习 之 碎片(四)
  6. 【Day03】使用原型最大的好处及原型链的理解
  7. 简单聊聊Python协程
  8. Paradigm此前投资Uniswap的资金价值或超30亿美元
  9. 30个最常用css选择器解析(经典)
  10. Hbase常用操作命令
  11. 如何理解UEFI的事件机制(三)——时钟中断
  12. pdf转dwg为什么乱码
  13. PHP语言之MySQL操作
  14. mac系统添加VSCode到右键菜单
  15. nginx同域名动静态分离
  16. HUAWEI华为MateBook 13 2020款 锐龙版 R7 集显 触屏 16GB+512GB (HNL-WFP9Q)原装出厂系统恢复原厂系统
  17. 第一讲:计算机基本结构
  18. docker常用的命令笔记
  19. android 内功修炼参考
  20. 计算机里面不显示光驱位硬盘,悲剧了!win10下新加的光驱位机械硬盘无法识别...

热门文章

  1. 合泰单片机 | HT66F3195 | 个人库开发过程 | 【1】前言
  2. 公布一年前发现阿里旺旺的一个xss漏洞的细节。
  3. 船舶强度与结构设计大作业二matlab,船舶强度与结构设计最新版
  4. 双线机房和双线双IP机房的区别
  5. 美国打车应用Lyft公布IPO招股书 预计3月底挂牌交易
  6. 技嘉B75-D3V nvme BIOS
  7. [CE3]CryEngine3的开源版本下载地址
  8. 如何停用笔记本的触摸板鼠标touch pad
  9. 苹果机上使用onenote2007
  10. Jieba分词工具介绍及相关API使用方法