【leetcode】Unique Paths

Unique Paths

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.

 
可以推到一下公式,对于m+1,n+1来说,只需要向右走m步,向下走n步,就能到达终点了,我们把向下和向右进行排列,所有的排列数就是结果
因此result=(m+n)!/(m!*n!)
直接求会超出范围,因此化简一下:
化简一下(m+1)(m/2+1)……(m/n+1)
 
 
 1 class Solution {

 2 public:

 3    

 4     int uniquePaths(int m, int n) {

 5        

 6         int result=0;

 7         double tmp=1;

 8         m--;

 9         n--;

10         for(int i=0;i<n;i++)

11         {

12             tmp*=(double)(m)/(i+1)+1;

13         }

14        

15         result=round(tmp);

16         return result;

17     }

18 };

 

 
直接用动态规划
 
 1 class Solution {

 2 public:

 3    

 4     int uniquePaths(int m, int n) {

 5        

 6         if(m==0||n==0) return 0;

 7  

 8         int dp[101][101];

 9        

10         dp[0][0]=1;

11        

12         for(int i=1;i<m;i++)

13         {

14             dp[i][0]=1;

15         }

16        

17         for(int j=1;j<n;j++)

18         {

19             dp[0][j]=1;

20         }

21        

22         for(int i=1;i<m;i++)

23         {

24             for(int j=1;j<n;j++)

25             {

26                 dp[i][j]=dp[i][j-1]+dp[i-1][j];

27             }

28         }

29         return dp[m-1][n-1];

30     }

31 };

 

你可能感兴趣的:(LeetCode)