zoukankan      html  css  js  c++  java
  • 62. Unique Paths java solutions

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below).

    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 (marked 'Finish' in the diagram below).

    How many possible unique paths are there?

    Above is a 3 x 7 grid. How many possible unique paths are there?

    Note: m and n will be at most 100.

    Subscribe to see which companies asked this question

     1 public class Solution {
     2     public int uniquePaths(int m, int n) {
     3         int[][] ans = new int[m][n];//可对数据优化,使用一维数组
     4         for(int i = 0; i< m;i++){
     5             ans[i][0] = 1;
     6         }
     7         for(int i = 0; i< n;i++){
     8             ans[0][i] = 1;
     9         }
    10         for(int i = 1;i < m; i++){
    11             for(int j = 1; j< n; j++){
    12                 ans[i][j] = ans[i][j-1] + ans[i-1][j];
    13             }
    14         }
    15         return ans[m-1][n-1];
    16     }
    17 }

    本地是最最简单的DP,非常有学习和理解的价值。

    解法二: 可采用组合数学的解法。

    robot从第(1,1)点走到了第(m,n)点。它只能向右或者向下,不管它怎么走,它必然向右走了m-1步,向下走了n-1步。一共走了m-1+n-1步。而不同的走法,本质是向右或者向下构成的m-1+n-1长度的序列不同。走法的总数目,本质上是m-1+n-1个总步数中选出m-1个代表向右走的走法的个数,这个问题的另一种表述是,走法的总数目,本质上是m-1+n-1个总步数中选出n-1个代表向下走的走法的个数。这其实正是组合的小性质。

    C(a+b, a)=C(a+b, b)
    这样题目就转换为了一个数学计算了,求C(m-1+n-1, m-1)。

    数学参考解法:http://blog.csdn.net/feliciafay/article/details/20197903

  • 相关阅读:
    餐饮点菜控件
    数据模块池
    关于sqlite数据库
    PHP使用DateTime类做时间日期到字符串转换
    php字符串比较函数
    Xdebug开源PHP程序调试器
    ubuntu chmod 无法更改 文件夹权限 系统提示“不允许的操作 2、linux 如何修改只读文件 3、ubuntu安装
    ubuntu的命令day1
    linux用终端上传文件和文件家到远程的服务器
    Symfony学习--原创。。。。
  • 原文地址:https://www.cnblogs.com/guoguolan/p/5616524.html
Copyright © 2011-2022 走看看