LintCode 不同的路徑114

2022-02-15 04:23:15 字數 1555 閱讀 2169

有乙個機械人的位於乙個 m × n 個網格左上角。

機械人每一時刻只能向下或者向右移動一步。機械人試圖達到網格的右下角。

問有多少條不同的路徑?

example 1:

input: n = 1, m = 3

output: 1

explanation: only one path to target position.

example 2:

input:  n = 3, m = 3

output: 6

explanation:

d : down

r : right

1) ddrr

2) drdr

3) drrd

4) rrdd

5) rdrd

6) rddr

n和m均不超過100

且答案保證在32位整數可表示範圍內。

class

solution:

""" @param m: positive integer (1

<= m <= 100

) @param n: positive integer (

1<= n <= 100

) @return: an integer

"""def uniquepaths(self, m, n):

# write your code here

#求階乘

def jc(num):

res = 1

for i in range(1,num+1

): res=res*i

return

res

nums = jc(m-1)*jc(n-1

) all = jc(m+n-2

)

return all//

nums

思路:

m*n1*3 dd 1 2*1//2*1

3*3 ddrr 6 4*3*2*1//2*1//2*1

63*2 drrrrrrrrrrrrrrrrrr..... 63 63*62*61*...1//62*61*60*...1//1

1.首先可以根據m*n算出有多少種不同的拼接可能,比如3*3,ddrr,drdr,drrd,rrdd,rdrd等 >>不管怎麼樣到達終點時都是向右2 步,向下2步,所以有d,d,r,r共4個元素,

有4*3*2*1種拼接組合

2.最終有m+n-2的階乘種拼接組合,但是全部的拼接組合中存在重複的元素,所以需要分別除以m-1的階乘種拼接組合

和除以n-1的階乘種拼接組合,得到的就是最終的所有可能了

公式表達:

全部出現的可能:m+n-2的階乘

重複元素拼接組合的可能:m-1的階乘,n-1的階乘

最終可能:m+n-2的階乘//(m-1的階乘*n-1階乘)

lintCode 115 不同的路徑

問題描述 不同的路徑 的跟進問題 現在考慮網格中有障礙物,那樣將會有多少條不同的路徑?網格中的障礙和空位置分別用 1 和 0 來表示。如下所示在3x3的網格中有乙個障礙物 0,0,0 0,1,0 0,0,0 一共有2條不同的路徑從左上角到右下角。思路 由於部分格仔有障礙物,不能訪問到,需要對左上角和...

Lintcode 114 不同的路徑

有乙個機械人的位於乙個 m n 個網格左上角。機械人每一時刻只能向下或者向右移動一步。機械人試圖達到網格的右下角。問有多少條不同的路徑?class solution public param m positive integer 1 m 100 param n positive integer 1 ...

lintcode練習 115 不同的路徑 II

不同的路徑 的跟進問題 現在考慮網格中有障礙物,那樣將會有多少條不同的路徑?網格中的障礙和空位置分別用 1 和 0 來表示。如下所示在3x3的網格中有乙個障礙物 0,0,0 0,1,0 0,0,0 一共有2條不同的路徑從左上角到右下角。m 和 n 均不超過100 如注釋,動態規劃類的題,最主要的是思...