题目:给定一个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; }
矩阵中从左上角到右下角的路径条数
最新推荐文章于 2022-07-23 19:38:14 发布