classSolution{public:intuniquePaths(int m,int n){int numerator = m -1;int denominator = m + n -2;// up/down = resultlongint up =1;int count = numerator;for(int i =1; i <= count;++i){
up *=(denominator--);while(numerator !=0&& up % numerator ==0){
up /= numerator;
numerator--;}}return up;}};
动态规划
确定dp数组(dp table)以及下标的含义 到每个格子的方法数
确定递推公式 dp[i][j] = dp[i-1][j] + dp[i][j-1];
dp数组如何初始化 把最左和最上初始为一,遇到障碍之后都为0
确定遍历顺序 从左到右 从上到下
举例推导dp数组
classSolution{public:intuniquePaths(int m,int n){int numerator = m -1;int denominator = m + n -2;// up/down = resultlongint up =1;int count = numerator;for(int i =1; i <= count;++i){
up *=(denominator--);while(numerator !=0&& up % numerator ==0){
up /= numerator;
numerator--;}}return up;}};