leetCode980 不同路徑3

2021-10-12 01:47:47 字數 2336 閱讀 1402

目錄

一、題目描述

二、解題思路

三、**實現

在二維網格 grid 上,有 4 種型別的方格:

返回在四個方向(上、下、左、右)上行走時,從起始方格到結束方格的不同路徑的數目。

每乙個無障礙方格都要通過一次,但是一條路徑中不能重複通過同乙個方格。

示例 1:

輸入:[[1,0,0,0],[0,0,0,0],[0,0,2,-1]]

輸出:2

解釋:我們有以下兩條路徑:

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

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

示例 2:

輸入:[[1,0,0,0],[0,0,0,0],[0,0,0,2]]

輸出:4

解釋:我們有以下四條路徑: 

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

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

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

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

示例 3:

輸入:[[0,1],[2,0]]

輸出:0

解釋:

沒有一條路能完全穿過每乙個空的方格一次。

請注意,起始和結束方格可以位於網格中的任意位置。

這道題就是典型的回溯演算法題了。從起始點開始從四個方向走,不斷的往深度方向上走,直到把所有空格走完且剛好到達終點時,這條路徑即為滿足要求的路徑,結果+1;但是這時得到的結果只是滿足條件的一條,要得到全部的結果,必須全部遍歷完所有可能的走法,言外之意就是要往前回溯。

回溯演算法的幾點小心得:

回溯演算法一般是需要全部遍歷的(還沒遇到不需要全部遍歷的情況);往深度方向遍歷,意味著需要遞迴;深度方向找到的結果只是其中之一,還需要往前回溯,才能走完所有的情況

**會有詳細註解

#include using namespace std;

//得到起始點位置

pairgetstart(vector>& grid)

} }return res;

}//得到可以走的格仔的數量

int getvalidgridcount(vector>& grid)

} }return ans;

}//走的方向

vectordx = ;

vectordy = ;

//儲存結果值

int result = 0;

void uniquepathsiii(vector>& grid, vector>& used, int& cnt, int m, int n)

//從當前有效格仔的四個方向走

for (int i = 0; i < 4; i++)

} }}int uniquepathsiii(vector>& grid)

} }int cnt = getvalidgridcount(grid);

pairstart = getstart(grid);

uniquepathsiii(grid, used, cnt, start.first, start.second);

return result;

}int main() ,, };

cout << uniquepathsiii(grid) << " ";

return 0;

}

leetcode No 980 不同路徑 III

承接 不同路徑 i 和 不同路徑 ii,雖然我的解法沒用到動態規劃,但是還是忍不住一塊說了吧。力扣 leetcode cn.com 題目描述 在二維網格grid上,有 4 種型別的方格 返回在四個方向 上 下 左 右 上行走時,從起始方格到結束方格的不同路徑的數目,每乙個無障礙方格都要通過一次。示例...

不同路徑(LeetCode)

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...

不同路徑(leetcode)

題目 物體怎樣從左上角移動到右下角,其中1表示有障礙,不能行走。思路 知道整個方框的行和列。對第一行和第一列進行填充1,當碰到1 障礙 填充0。本題可以被視為乙個動態規劃的問題,從上到下,從左到右,其中到達乙個終點的路徑總是左邊路徑 上面路徑。即 d p i j dp i 1 j dp i j 1 ...