//动态规划 4 步走 // 1.确定状态,最后一步+分解为子问题 // 2.转移方程,根据子问题直接定义得到 // 3.初始条件 + 边界条件 // 4.计算顺序,避免重复计算 class Solution { public: int uniquePaths(int m, int n) { if(m<=0 || n<=0) return 0; //构建辅助数组 int** dp=new int*[m]; for(int i=0;i<m;i++) dp[i]=new int[n]; //初始化 dp[0][0]=1; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ //边界条件 if(i==0 || j==0) dp[i][j]=1; else{ //转移方程 dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } } int result=dp[m-1][n-1]; for(int i=0;i<m;i++) delete[] dp[i]; delete[] dp; return result; } };