• 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

  • 相关阅读:
    search for a range
    search in rotated sorted array
    MSDN--Windows Server
    Windows Server 2016- Windows Server 2016 上 HYPER-V 中的新增功能
    Azure 媒体服务产品简介
    EMC Avamar Virtual Edition 7.1.1 for Microsoft Azure and Hyper-V Released
    漫游用户配置文件 -文件夹重定向
    How to Install office 365 Plus without ODT
    Azure IoT
    AD FS deployment in Azure
  • 原文地址:https://www.cnblogs.com/guoguolan/p/5616524.html
Copyright © 2020-2023  润新知