1. 程式人生 > 其它 >LeetCode62 不同路徑

LeetCode62 不同路徑

LeetCode62 不同路徑

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

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

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

//利用mem陣列記錄從start點到達各方格的路徑數量
//遞迴查詢下、右兩個方向的路徑
func findPath(m int, n int, mem [][]int) int {
    //任一方向到達終點
    if m == 1 || n == 1 {
		return 1
	}
	if mem[m][n] > 0 {
		return mem[m][n]
	}
	mem[m][n] = findPath(m-1,n,mem) + findPath(m,n-1,mem)
	return mem[m][n]
}

func uniquePaths(m int, n int) int {
    //GO構建二維陣列
    var mem = make([][]int, m+1)
    for i:=0; i<m+1; i++ {
        mem[i] = make([]int, n+1)
    }
    return findPath(m, n, mem)
}