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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

不同路径II

發布時間:2024/4/18 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 不同路径II 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


思路

確定dp數組(dp table)以及下標的含義

dp[i][j] :表示從(0 ,0)出發,到(i, j) 有dp[i][j]條不同的路徑。

確定遞推公式

遞推公式和62.不同路徑一樣,dp[i][j] = dp[i - 1][j] + dp[i][j - 1]。

但需要注意,由于有了障礙,(i, j)如果就是障礙的話應該就保持初始狀態(初始狀態為0)。

所以代碼為:

if (obstacleGrid[ii][jj] == 0) { // 當(ii, jj)沒有障礙的時候,再推導dp[i][j]dp[ii][jj] = dp[ii - 1][jj] + dp[ii][jj - 1]; }

dp數組如何初始化

在62.不同路徑中的初始化:

vector<vector<int>> dp(m, vector<int>(n, 0)); // 初始值為0 for (int i = 0; i < m; i++) dp[i][0] = 1; for (int j = 0; j < n; j++) dp[0][j] = 1;

因為從(0, 0)的位置到(i, 0)的路徑只有一條,所以dp[i][0]一定為1,dp[0][j]也同理。

但如果(i, 0) 這條邊有了障礙之后,障礙之后(包括障礙)都是走不到的位置了,所以障礙之后的dp[i][0]應該還是初始值0。

所以本題初始化代碼為:

//for循環的終止條件,一旦遇到obstacleGrid[i][0] == 1的情況就停止dp[ii][0]的賦值1的操作,dp[0][jj]同理for(int jj=0;jj<n&&obstacleGrid[0][jj]==0;jj++){dp[0][jj]=1;}for(int ii=0;ii<m&&obstacleGrid[ii][0]==0;ii++){dp[ii][0]=1;}

確定遍歷順序

從遞歸公式dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 中可以看出,一定是從左到右一層一層遍歷,這樣保證推導dp[i][j]的時候,dp[i - 1][j] 和 dp[i][j - 1]一定是有數值。

代碼如下:

for(int ii=1;ii<m;ii++){for(int jj=1;jj<n;jj++){if(obstacleGrid[ii][jj]==0) dp[ii][jj]=dp[ii-1][jj]+dp[ii][jj-1];}}

舉例推導dp數組

拿示例1來舉例如題:

時間復雜度O(n * m) n m 分別為obstacleGrid 長度和寬度 空間復雜度O(n * m) class Solution { public:int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {int m=obstacleGrid.size();int n=obstacleGrid[0].size();vector<vector<int>> dp(m,vector<int>(n,0));//for循環的終止條件,一旦遇到obstacleGrid[i][0] == 1的情況就停止dp[ii][0]的賦值1的操作,dp[0][jj]同理for(int jj=0;jj<n&&obstacleGrid[0][jj]==0;jj++){dp[0][jj]=1;}for(int ii=0;ii<m&&obstacleGrid[ii][0]==0;ii++){dp[ii][0]=1;}for(int ii=1;ii<m;ii++){for(int jj=1;jj<n;jj++){if(obstacleGrid[ii][jj]==0) dp[ii][jj]=dp[ii-1][jj]+dp[ii][jj-1];}}return dp[m-1][n-1];} };

總結

以上是生活随笔為你收集整理的不同路径II的全部內容,希望文章能夠幫你解決所遇到的問題。

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