Skip to content

Files

Latest commit

7a7d3f2 · Oct 20, 2020

History

History

0529.Minesweeper

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Aug 16, 2020
Oct 20, 2020
Oct 20, 2020

English Version

题目描述

让我们一起来玩扫雷游戏!

给定一个代表游戏板的二维字符矩阵。 'M' 代表一个未挖出的地雷,'E' 代表一个未挖出的空方块,'B' 代表没有相邻(上,下,左,右,和所有4个对角线)地雷的已挖出的空白方块,数字('1' 到 '8')表示有多少地雷与这块已挖出的方块相邻,'X' 则表示一个已挖出的地雷。

现在给出在所有未挖出的方块中('M'或者'E')的下一个点击位置(行和列索引),根据以下规则,返回相应位置被点击后对应的面板:

    <li>如果一个地雷(&#39;M&#39;)被挖出,游戏就结束了- 把它改为&nbsp;<strong>&#39;X&#39;</strong>。</li>
    
    <li>如果一个<strong>没有相邻地雷</strong>的空方块(&#39;E&#39;)被挖出,修改它为(&#39;B&#39;),并且所有和其相邻的方块都应该被递归地揭露。</li>
    
    <li>如果一个<strong>至少与一个地雷相邻</strong>的空方块(&#39;E&#39;)被挖出,修改它为数字(&#39;1&#39;到&#39;8&#39;),表示相邻地雷的数量。</li>
    
    <li>如果在此次点击中,若无更多方块可被揭露,则返回面板。</li>
    

 

示例 1:

输入: 



[['E', 'E', 'E', 'E', 'E'],

 ['E', 'E', 'M', 'E', 'E'],

 ['E', 'E', 'E', 'E', 'E'],

 ['E', 'E', 'E', 'E', 'E']]



Click : [3,0]



输出: 



[['B', '1', 'E', '1', 'B'],

 ['B', '1', 'M', '1', 'B'],

 ['B', '1', '1', '1', 'B'],

 ['B', 'B', 'B', 'B', 'B']]



解释:

示例 2:

输入: 



[['B', '1', 'E', '1', 'B'],

 ['B', '1', 'M', '1', 'B'],

 ['B', '1', '1', '1', 'B'],

 ['B', 'B', 'B', 'B', 'B']]



Click : [1,2]



输出: 



[['B', '1', 'E', '1', 'B'],

 ['B', '1', 'X', '1', 'B'],

 ['B', '1', '1', '1', 'B'],

 ['B', 'B', 'B', 'B', 'B']]



解释:

 

注意:

  1. 输入矩阵的宽和高的范围为 [1,50]。
  2. 点击的位置只能是未被挖出的方块 ('M' 或者 'E'),这也意味着面板至少包含一个可点击的方块。
  3. 输入面板不会是游戏结束的状态(即有地雷已被挖出)。
  4. 简单起见,未提及的规则在这个问题中可被忽略。例如,当游戏结束时你不需要挖出所有地雷,考虑所有你可能赢得游戏或标记方块的情况。

解法

Python3

Java

...