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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

[JS][dfs]题解 | #迷宫问题#

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [JS][dfs]题解 | #迷宫问题# 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題解 | #迷宮問題#


題目鏈接

迷宮問題

題目描述

定義一個二維數組 N*M ,如 5 × 5 數組下所示:

int maze[5][5] = {
0, 1, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 0, 0,
0, 1, 1, 1, 0,
0, 0, 0, 1, 0,
};

它表示一個迷宮,其中的1表示墻壁,0表示可以走的路,只能橫著走或豎著走,不能斜著走,要求編程序找出從左上角到右下角的路線。入口點為[0,0],既第一格是可以走的路。

本題含有多組數據。

輸入描述:

輸入兩個整數,分別表示二維數組的行數,列數。再輸入相應的數組,其中的1表示墻壁,0表示可以走的路。數據保證有唯一解,不考慮有多解的情況,即迷宮只有一條通道。

輸出描述:

左上角到右下角的最短路徑,格式如樣例所示。

示例1

輸入:

5 5
0 1 0 0 0
0 1 1 1 0
0 0 0 0 0
0 1 1 1 0
0 0 0 1 0

輸出:

(0,0)
(1,0)
(2,0)
(2,1)
(2,2)
(2,3)
(2,4)
(3,4)
(4,4)

示例2

輸入:

5 5
0 1 0 0 0
0 1 0 1 0
0 0 0 0 1
0 1 1 1 0
0 0 0 0 0

輸出:

(0,0)
(1,0)
(2,0)
(3,0)
(4,0)
(4,1)
(4,2)
(4,3)
(4,4)

解題思路

簡單尋路,注意多組輸入即可。使用的方法是dfs,在每一次到達終點時判斷是否為更短路并刷新,就OK。


題解

while (line = readline()) {let nums = line.split(' ');let col = +nums[0];let row = +nums[1];let map = [];for (let i = 0; i < col; i++) {map.push([]);let mapline = readline().split(' ');for (let j = 0; j < row; j++) {map[i][j] = +mapline[j];}}let minLine = [];let nowLine = [];let dir = [[0, 1], [0, -1], [1, 0], [-1, 0]];let book = [];for (let i = 0; i < col; i++) {book.push([]);for (let j = 0; j < row; j++) {book[i][j] = 0;}}let dfs = (x, y) => {nowLine.push(`(${x},${y})`);book[x][y] = 1;if (x == col - 1 && y == row - 1) {if (minLine.length == 0 || nowLine.length < minLine.length) {minLine = [];for (let i = 0; i < nowLine.length; i++) {minLine[i] = nowLine[i];}}book[x][y] = 0;nowLine.pop();return;}for (let i = 0; i < 4; i++) {let tox = x + dir[i][0];let toy = y + dir[i][1];if (tox >= 0 && tox < col && toy >= 0 && toy < row && map[tox][toy] == 0 && book[tox][toy] == 0) {dfs(tox, toy);}}book[x][y] = 0;nowLine.pop();return;}dfs(0, 0);for (let i = 0; i < minLine.length; i++) {console.log(minLine[i]);}
}

總結

以上是生活随笔為你收集整理的[JS][dfs]题解 | #迷宫问题#的全部內容,希望文章能夠幫你解決所遇到的問題。

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