天池 在线编程 扫雷(BFS)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

描述
现在有一个简易版的扫雷游戏,你将得到一个n*m大小的二维数组作为游戏地图。
每个位置上有一个值(0或1,1代表此处没有雷,0表示有雷)。
你将获得一个起点的位置坐标(x,y),x表示所在行数,y表示所在列数(x,y均从0开始计数)。
若当下位置上没有雷,则上下左右四个方向均可以到达,
若当下位置有雷,则不能再往新的方向移动。 请问一共有哪些位置是可以到达的呢?

0<n,m<=200. 答案返回一个任意顺序的数组,数组包括所有可以到达的位置坐标。

示例

样例1
输入: [[1,0,0,0],[1,0,0,0],[0,1,1,1],[0,1,0,0]][0,1]
输出: [[0,1]]
解释:[0,1]位置上是0,不能再往新的地方走,只能到达这一个位置样例2
输入: [[1,0,0,0],[1,0,0,0],[0,1,1,1],[0,1,0,0]][1,0]
输出: [[0,0],[1,0],[1,1],[2,0],[0,1]]
解释:[1,0]位置上是1,所以可以走到[[0,0],[1,1],[2,0]],
其中只有[0,0]位置上是1可以继续走到[0,1],然后不能再走了。

来源:https://tianchi.aliyun.com/oj/141754208384739500/160296091929219252

2. 解题

  • 广度优先搜索
class Solution {
public:/*** @param Mine_map: an array represents the map.* @param Start: the start position.* @return: return an array including all reachable positions.*/vector<vector<int>> Mine_sweeping(vector<vector<int>> &Mine_map, vector<int> &Start) {// write your code herevector<vector<int>> ans;vector<vector<int>> dir = {{1, 0},{0, 1},{-1,0},{0,-1}};int m = Mine_map.size(), n = Mine_map[0].size();vector<vector<bool>> vis(m, vector<bool>(n, false));queue<vector<int>> q;q.push(Start);vis[Start[0]][Start[1]] = true;while(!q.empty()){int x = q.front()[0];int y = q.front()[1];q.pop();ans.push_back({x, y});if(Mine_map[x][y] == 0)//是地雷,不能再走了continue;for(int k = 0; k < 4; ++k){int i = x + dir[k][0];int j = y + dir[k][1];if(i>=0 && i < m && j>=0 && j < n && !vis[i][j]){vis[i][j] = true;q.push({i, j});}}}return ans;}
};

151ms C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473581.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink简介

1 什么是Flink Apache Flink 是一个框架和分布式处理引擎&#xff0c;用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行&#xff0c;并能以内存速度和任意规模进行计算。 它的主要特性包括&#xff1a;批流一体化、精密的状态管理、事件时间支…

天池 在线编程 旅行计划(暴力回溯)

文章目录1. 题目2. 解题1. 题目 描述 有n个城市&#xff0c;给出邻接矩阵arr代表任意两个城市的距离。 arr[i][j]代表从城市i到城市j的距离。Alice在周末制定了一个游玩计划&#xff0c;她从所在的0号城市开始&#xff0c;游玩其他的1 ~ n-1个城市&#xff0c;最后回到0号。 A…

初始化环境配置:CentOS 7.4x64 系统安装及基础配置

1.安装CentOS操作系统 ① 在进入系统引导后&#xff0c;会进入文字界面&#xff0c;选择install CentOS7 &#xff08;用键盘上的方向键↑、↓来选择要执行的操作&#xff0c;白色字体表示选中&#xff0c;按下回车&#xff0c;进入下一步操作&#xff09; ② 按回车执行安…

天池 在线编程 拿走瓶子(区间DP)

文章目录1. 题目2. 解题1. 题目 描述 有n个瓶子排成一列&#xff0c;用arr表示。 你每次可以选择能够形成回文连续子串的瓶子拿走&#xff0c;剩下的瓶子拼接在一起。 返回你能拿走所有的瓶子的最小次数。 n<500 arr[i]<1000示例 例1: 输入&#xff1a;[1,3,4,1,5] …

Flink运行时架构

1 运行时相关的组件 Flink运行时架构主要包括四个不同的组件&#xff1a;作业管理器&#xff08;JobManager&#xff09;、资源管理器&#xff08;ResourceManager&#xff09;、任务管理器&#xff08;TaskManager&#xff09;&#xff0c;以及分发器&#xff08;Dispatcher&a…

大型网站电商网站架构案例和技术架构的示例

大型网站架构是一个系列文档&#xff0c;欢迎大家关注。本次分享主题&#xff1a;电商网站架构案例。从电商网站的需求&#xff0c;到单机架构&#xff0c;逐步演变为常用的&#xff0c;可供参考的分布式架构的原型。除具备功能需求外&#xff0c;还具备一定的高性能&#xff0…

天池 在线编程 删除字符(单调栈)

文章目录1. 题目2. 解题1. 题目 描述 给定一个字符串str&#xff0c;现在要对该字符串进行删除操作&#xff0c; 保留字符串中的 k 个字符且相对位置不变&#xff0c;并且使它的字典序最小&#xff0c;返回这个子串。 示例 例1: 输入:str"fskacsbi",k2 输出:&quo…

Flask框架项目实例:**租房网站(二)

Flask是一款MVC框架&#xff0c;主要是从模型、视图、模板三个方面对Flask框架有一个全面的认识&#xff0c;通过完成作者-读书功能&#xff0c;先来熟悉Flask框架的完整使用步骤。 操作步骤为&#xff1a; 1.创建项目2.配置数据库3.定义模型类4.定义视图并配置URL 5.定义模板…

Android中的APK,TASK,PROCESS,USERID之间的关系

开发Android已经有一段时间了&#xff0c;今天接触到底层的东西&#xff0c;所以对于进程&#xff0c;用户的id以及Android中的Task,Apk之间的关系&#xff0c;要做一个研究&#xff0c;下面就是研究结果: apk一般占一个dalvik,一个进程,一个task。当然通过通过设置也可以多个进…

天池 在线编程 插入五

文章目录1. 题目2. 解题1. 题目 描述 给定一个数字&#xff0c;在数字的任意位置插入一个5&#xff0c;使得插入后的这个数字最大 示例 样例 1: 输入: a 234 输出: 5234 来源&#xff1a;https://tianchi.aliyun.com/oj/141758389886413149/160295184768372892 2. 解…

Flink的Window

1 Window概述 streaming流式计算是一种被设计用于处理无限数据集的数据处理引擎&#xff0c;而无限数据集是指一种不断增长的本质上无限的数据集&#xff0c;而window是一种切割无限数据为有限块进行处理的手段。 Window是无限数据流处理的核心&#xff0c;Window将一个无限的s…

标记语言Markdown介绍以及日常使用

Markdown介绍 Markdown是一种文本标记语言&#xff0c;用于快速文档排版Markdown文件为纯文本文件&#xff0c;后缀名为 .mdMarkdown介于Word和HTML之间 比起Word&#xff0c;Markdown是纯文本&#xff0c;排版文档轻量、方便、快速。比起HTML&#xff0c;Markdown简单直观&…

天池 在线编程 有效的字符串

文章目录1. 题目2. 解题1. 题目 描述 如果字符串的所有字符出现的次数相同&#xff0c;则认为该字符串是有效的。 如果我们可以在字符串的某1个索引处删除1个字符&#xff0c;并且其余字符出现的次数相同&#xff0c;那么它也是有效的。 给定一个字符串s&#xff0c;判断它是否…

Flink的时间语义和Watermark

1 时间语义 数据迟到的概念是&#xff1a;数据先产生&#xff0c;但是处理的时候滞后了 在Flink的流式处理中&#xff0c;会涉及到时间的不同概念&#xff0c;如下图所示&#xff1a; Event Time&#xff1a;是事件创建的时间。它通常由事件中的时间戳描述&#xff0c;例如采集…

数据分析案例:亚洲国家人口数据计算

数据截图: 数据下载地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1dGHwAC5 密码&#xff1a;nfd2 该数据包含了2006年-2015年10年间亚洲地区人口数量数据&#xff0c;共10行50列数据。我们需要使用Numpy完成如下数据任务: 计算2015年各个国家人口数据计算朝鲜历…

LeetCode 1646. 获取生成数组中的最大值

文章目录1. 题目2. 解题1. 题目 给你一个整数 n 。按下述规则生成一个长度为 n 1 的数组 nums &#xff1a; nums[0] 0nums[1] 1当 2 < 2 * i < n 时&#xff0c;nums[2 * i] nums[i]当 2 < 2 * i 1 < n 时&#xff0c;nums[2 * i 1] nums[i] nums[i 1]…

TotoiseSVN的基本使用方法

一、签入源代码到SVN服务器 假如我们使用Visual Studio在文件夹StartKit中创建了一个项目&#xff0c;我们要把这个项目的源代码签入到SVN Server上的代码库中里&#xff0c;首先右键点击StartKit文件夹&#xff0c;这时候的右键菜单如下图所示&#xff1a; 图2-2-1 点击Import…

LeetCode 1647. 字符频次唯一的最小删除次数(贪心)

文章目录1. 题目2. 解题1. 题目 如果字符串 s 中 不存在 两个不同字符 频次 相同的情况&#xff0c;就称 s 是 优质字符串 。 给你一个字符串 s&#xff0c;返回使 s 成为 优质字符串 需要删除的 最小 字符数。 字符串中字符的 频次 是该字符在字符串中的出现次数。 例如&am…

Flink中的状态管理

1 Flink中的状态 当数据流中的许多操作只查看一个每次事件(如事件解析器)&#xff0c;一些操作会跨多个事件的信息(如窗口操作)。这些操作称为有状态。状态由一个任务维护&#xff0c;并且用来计算某个结果的所有数据&#xff0c;都属于这个任务的状态。可以简单的任务状态就是…

Python之日志处理(logging模块)

主要内容 日志相关概念logging模块简介使用logging提供的模块级别的函数记录日志logging模块日志流处理流程使用logging四大组件记录日志配置logging的几种方式向日志输出中添加上下文信息参考文档 一、日志相关概念 日志是一种可以追踪某些软件运行时所发生事件的方法。软件开…