https://leetcode.com/problems/unique-paths/
機器人從一堆方格的左上角走到右下角,只能往右或者往下走 ,問有幾種走法
Note:code
Example:ip
Example 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 Example 2: Input: m = 7, n = 3 Output: 28
class Solution { public: int uniquePaths(int m, int n) { double sum = 1, up = 1; // 這裏必定是 double int mi = m < n ? m : n; // 必須先找出最小的,雖然數學上兩個排列相等,可是程序裏由於數的範圍限制神馬的不清楚,會超時 for (int i = 0; i < mi - 1; i++) { sum *= m + n - 2 - i; up *= i + 1; } return (int)(sum / up); // 最後要把double 變到 integer } };
就是在總步數 m + n - 2 裏選 n-1 步 (m - 1)是往下走(右)leetcode