矩陣中從左上角到右下角的路徑條數
阿新 • • 發佈:2018-12-24
題目:給定一個n*m矩陣,求從左上角到右下角總共存在多少條路徑,每次只能向右走或者向下走。
解法一:和上一篇文章的思想相似,在此不再重複敘述。
解法二:數學中的組合問題,因為從左上角到右下角,總共需要走n+m-2步,左上角和右下角的元素不考慮在內,我們每次都可以選擇向下走,向下走總共需要m-1步,所以在n+m-2步中選擇m-1步,這是典型的排列組合問題。int uniquePaths(int m, int n) { if (m <= 0 || n <= 0) return 0; vector<int> data(n,1); int cur = 0; for(int i = 1; i < m; ++i) { cur = 1; for(int j = 1; j < n; ++j) { cur = cur + data[j]; data[j] = cur; } } return data[n - 1]; }
int uniquePaths(int m, int n)
{
int N = n + m - 2;
int K = n - 1;
double res = 1.0;
for (int i = 1; i <= n - 1; ++i)
{
res = res * (N - K + i) / i;
}
return (int)res;
}