一个机器人位于一个m*n的网格的左上角。
它每次只能向下或向右移动一格。它试图到达网格的右下角。
求有多少种不重复的路径?
备注:
m和n最大为100.
示例1:
Input: m = 3, n = 2
Output: 3
Explanation:
From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
1. Right -> Right -> Down
2. Right -> Down -> Right
3. Down -> Right -> Right
示例2:
Example 2:
Input: m = 7, n = 3
Output: 28
思路
1、数学法
路径数是可以通过数学公式直接计算出来的。
对于m*n的网格,从左上角到右下角,无论怎么走,都必定包含 m-1 次右移和 n-1 次下移。
因此问题转换为:将 m-1 个黑球和 n-1 个白球串成长度为 m+n-2 的队列,问排列方式有几种。
这是一个排列组合文体,方法为:从 m+n-2 个空位置中,选出 m-1 个位置,放黑球,其他位置放白球。
因此排列方式有 C m + n − 2 m − 1 = ( m + n − 2 ) ! / [ ( m − 1 ) ! ( n − 1 ) ! ] C_{m+