思路: 最后一行 和最后一列 只有一条路可以走,所以 都填1;
然后其他所有格子能走的可能性为 往下走的时候的可能性 加上往右走的时候的可能性,
当最终所有都求和结束的时候,返回matrix【0】【0】 就是最终的蛋啊
#include<vector>
#include<iostream>
using namespace std;
class Solution {
public:
// n 行 m列
int uniquePaths(int m, int n) {
if(m==0 || n==0){
return 0;
}
if(m==1 || n==1){
return 1;
}
vector<vector<int> > matrix(n);
for(int i=0;i<n;++i){
// my fault : i 写成了 0
matrix[i].resize(m);
}
// 最后一列 为1
for(int i=0;i<n;++i){
matrix[i][m-1] = 1;
}
// 最后一行为1
for(int i=0;i<m;++i){
matrix[n-1][i] = 1;
}
for(int i=n-2;i>=0;--i){
for(int j=m-2;j>=0;--j){
matrix[i][j] = matrix[i][j+1] + matrix[i+1][j];
}
}
return matrix[0][0];
}
};
int main(){
Solution s;
cout << s.uniquePaths(3,2);
return 0;
}