Unique Paths

来源:互联网 发布:java md5盐值加密解密 编辑:程序博客网 时间:2024/05/19 21:44

A robot is located at the top-left corner of a m x n grid.

The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid.

How many possible unique paths are there?

 Notice

m and n will be at most 100.

Example

Given m = 3 and n = 3, return 6.
Given m = 4 and n = 5, return 35.

坐标型动态规划,在初始化时需要初始化第一行和第一列

java

public class Solution {    /*     * @param m: positive integer (1 <= m <= 100)     * @param n: positive integer (1 <= n <= 100)     * @return: An integer     */    public int uniquePaths(int m, int n) {        // write your code here        if (m <= 0 || n <= 0) {            return -1;        }        // state        int[][] f = new int[m][n];        f[0][0] = 1;        for (int i = 1; i < m; i++) {            f[i][0] = 1;        }        for (int i = 1; i < n; i++) {            f[0][i] = 1;        }        for (int i = 1; i < m; i++) {            for (int j = 1; j < n; j++) {                f[i][j] = f[i - 1][j] + f[i][j - 1];            }        }        return f[m - 1][n - 1];    }}

python

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        if m <= 0 or n <= 0:            return 0        res = [[0] * n for i in range(m)]        res[0][0] = 1        for i in range(m):            res[i][0] = 1        for i in range(n):            res[0][i] = 1        for i in range(1, m):            for j in range(1, n):                res[i][j] = res[i - 1][j] + res[i][j - 1]        return res[m - 1][n - 1]


原创粉丝点击