亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現在的位置是:首頁 > 技術閱讀 >  每日一題之不同路徑

每日一題之不同路徑

時間:2024-02-14

題目62:不同路徑



一個機器人位于一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。

機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。

問總共有多少條不同的路徑?


例如,上圖是一個7 x 3 的網格。有多少可能的路徑?

示例1:

輸入: m = 3, n = 2輸出: 3解釋:從左上角開始,總共有 3 條路徑可以到達右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右3. 向下 -> 向右 -> 向右
示例2:
輸入: m = 7, n = 3輸出: 28
提示:
  • 1 <= m, n <= 100

  • 題目數據保證答案小于等于 2 * 10 ^ 9

分析

由于機器人每次只能向下或者向右移動一步,當前節點只能從上面節點或者左邊節點走過來,dpi表示走到當前節點共有多少條路徑,則路徑數dpi=dpi-1 + dpi,第一排和第一列的路徑數肯定是1,具體可以看代碼。

代碼

class Solution {public:    int uniquePaths(int m, int n) {        int dp[m][n];        for (int i = 0; i < n; ++i) {            dp[0][i] = 1;        }        for (int i = 0; i < m; ++i) {            dp[i][0] = 1;        }        for (int i = 1; i < m; ++i) {            for (int j = 1; j < n; ++j) {                dp[i][j] = dp[i-1][j] + dp[i][j-1];            }        }        return dp[m-1][n-1];    }};

擴展63:不同路徑II

現在考慮網格中有障礙物。那么從左上角到右下角將會有多少條不同的路徑?

分析

大體和上一題相同,只是障礙物的節點路徑數為0,第一行或者第一列某一節點為障礙物,它后面的節點全部不可達。見代碼:

代碼

class Solution {public:    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {        int row = obstacleGrid.size();        int col = obstacleGrid[0].size();        long long dp[row][col];        bool has_obstacle = false;        for (int i = 0; i < col; ++i) {            if (obstacleGrid[0][i] == 1) {                has_obstacle = true;            }            dp[0][i] = has_obstacle ? 0 : 1;        }        has_obstacle = false;        for (int i = 0; i < row; ++i) {            if (obstacleGrid[i][0] == 1) {                has_obstacle = true;            }            dp[i][0] = has_obstacle ? 0 : 1;        }        for (int i = 1; i < row; ++i) {            for (int j = 1; j < col; ++j) {                if (obstacleGrid[i][j] == 1) {                    dp[i][j] = 0;                } else {                    dp[i][j] = dp[i-1][j] + dp[i][j-1];                }            }        }        return dp[row-1][col-1];    }};
主站蜘蛛池模板: 贵州省| 平和县| 彰化县| 苍南县| 宾川县| 玛多县| 正阳县| 卢氏县| 高陵县| 安图县| 孟津县| 宜昌市| 泗水县| 类乌齐县| 金山区| 班戈县| 开封市| 霸州市| 寿阳县| 新昌县| 舒兰市| 界首市| 牡丹江市| 阿拉善左旗| 呼图壁县| 普陀区| 邮箱| 德兴市| 临沂市| 萨迦县| 且末县| 天长市| 井冈山市| 托克逊县| 青田县| 霸州市| 田东县| 墨玉县| 灵璧县| 淮南市| 龙川县|