62 不同路徑

2021-08-18 02:32:13 字數 842 閱讀 8926

一、題目

機械人位於乙個 m x n 網格的左上角, 在下圖中標記為「start」 (開始)。

機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角,在下圖中標記為「finish」(結束)。

問有多少條不同的路徑?

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

注意: m 和 n 的值均不超過 100。

二、分析和解答

1、按照分類來做的,所以知道要使用動態規劃。假設path[i][j]表示從start位置到網格中i行j列的位置所有的路徑數,很容易可以觀察到:path[i][j] = path[i-1][j] + path[i][j-1];因此就有了遞迴式。下面就是初始化了,[0][0]位置肯定是0;下面兩點非常關鍵:

(1)p[0][0]應該設為0還是1,經測試設定為1符合答案;我開始設定為0了,不過if(m == 1) return 1;if(n == 1)return 1;陰差陽錯的對了;

(2)第一行和第一列都是只有一種路徑:一行的話只能橫著走,一列的話只能豎著走;

**如下:

public

intuniquepaths(int m, int n)

for(int j=1;j0][j] = 1;

}for(int i=1;ifor(int j=1;j1][j] + path[i][j-1];}}

return path[m-1][n-1];

}

62 不同路徑

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

62 不同路徑

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

62 不同路徑

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?思考 是一道動態規劃的題目,可以看出圖中黑線部分上面,若是走最上面一行 最左邊一列的位置,只可能是沿...