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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 人文社科 > 生活经验 >内容正文

生活经验

伍六七带你学算法 动态规划 ——不同路径

發(fā)布時(shí)間:2023/11/28 生活经验 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 伍六七带你学算法 动态规划 ——不同路径 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

力扣 62. 不同路徑

難度 中等

一個(gè)機(jī)器人位于一個(gè) m x n 網(wǎng)格的左上角 (起始點(diǎn)在下圖中標(biāo)記為“Start” )。
機(jī)器人每次只能向下或者向右移動(dòng)一步。機(jī)器人試圖達(dá)到網(wǎng)格的右下角(在下圖中標(biāo)記為“Finish”)。
問(wèn)總共有多少條不同的路徑?

例如,上圖是一個(gè)7 x 3 的網(wǎng)格。有多少可能的路徑?

示例 1:
輸入: m = 3, n = 2
輸出: 3
解釋:
從左上角開(kāi)始,總共有 3 條路徑可以到達(dá)右下角。
1 向右 -> 向右 -> 向下
2 向右 -> 向下 -> 向右
3 向下 -> 向右 -> 向右

示例 2:
輸入: m = 7, n = 3
輸出: 28

提示:
1 <= m, n <= 100
題目數(shù)據(jù)保證答案小于等于 2 * 10 ^ 9

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/unique-paths


本題是一個(gè)有關(guān)動(dòng)態(tài)規(guī)劃的題目,首先,動(dòng)態(tài)規(guī)劃最重要的是掌握他的思想,動(dòng)態(tài)規(guī)劃的核心思想是把原問(wèn)題分解成子問(wèn)題進(jìn)行求解,也就是分治的思想。

本題中m×n的表格中機(jī)器人一定會(huì)走m+n-2步,即從m+n-2中挑出m-1步向下走不就行了嗎?即C((m+n-2),(m-1))

C(m,n)是數(shù)學(xué)公式
C(m,n)=m×(m-1)×……×(m-n+1)/n×(n-1)^……3×2×1
C(10,3)=10×9×8/3×2×1

到了本題上這樣計(jì)算是不是根本不懂怎么用這個(gè)公式??

那么我這么說(shuō),你應(yīng)該就懂了→重點(diǎn)!

1.從第一個(gè)格子開(kāi)始,我們每一個(gè)格子計(jì)算到這個(gè)格子的路徑數(shù)
2.每一個(gè)格子的路徑數(shù)就等于它上面格子和左邊格子路徑的和
3.第一行和第一列的格子路徑數(shù)都為1
最后,我們只需要拿到最后一個(gè)格子的路徑返回即可!
上代碼👇

public class _62_不同路徑 {public static int uniquePaths(int m, int n) {int [][]dp = new int[m][n];for(int i = 0;i<m;i++){for(int j = 0;j<n;j++){if(j==0||i==0){dp[i][j]=1;}else{dp[i][j]=dp[i][j-1]+dp[i-1][j];}}}return dp[m-1][n-1];}public static void main(String[] args) {System.out.println(uniquePaths(7,3));}
}

數(shù)組只用到上一個(gè)狀態(tài),因此可以只用一個(gè)一維數(shù)組,優(yōu)化空間復(fù)雜度

public class _62_不同路徑 {public static int uniquePaths(int m, int n) {int[] dp = new int[n+1];for(int i = 0; i < m; i++){for(int j = 1; j <= n; j++){if(dp[j-1] == 0){    //邊界dp[j] = 1;}else{     //狀態(tài)轉(zhuǎn)移方程dp[j] = dp[j-1] + dp[j];}}}return dp[n];}public static void main(String[] args) {System.out.println(uniquePaths(7,3));}
}

總結(jié)

以上是生活随笔為你收集整理的伍六七带你学算法 动态规划 ——不同路径的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。