日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

天池 在线编程 扫雷(BFS)

發布時間:2024/7/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 天池 在线编程 扫雷(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阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的天池 在线编程 扫雷(BFS)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。