此题可以用动态规划来进行解题,动规五部曲(dp含义、递推公式、初始化、遍历顺序、打印数组)
理解题目及思路:此题注意要求的是路径而不是步数,我们dp[i][j]的含义就是到达每个格子的总共不同路径,我们分析一下图并得出规律,因为只能向下和向右走,所以可以看出(i,j)这个格子的不同路径关乎到的是上面的格子和左边的格子,求坐标(i,j)的总共不同路径dp[i][j]则是dp[i-1][j] + dp[i][j-1]。
dp含义:每个格子的不同路径总和
递推公式:dp[i][j] = dp[i-1][j] + dp[i][j-1]
初始化:为了防止越界,我们开始的坐标即为(1,1),第一行和第一列的路径是1,所以都初始化为1,其他格子就可以推展得出
遍历顺序:二维数组的从左往右,从上往下
打印数组:当遇到疑惑或者提交错误时,打印数组出来比较快速的看看哪一步有错。
以下是我在力扣c语言提交的代码,仅供参考:
int uniquePaths(int m, int n) {
int dp[110][110];
for(int i = 1;i<=m;i++) dp[i][1] = 1;
for(int i = 1;i<=n;i++) dp[1][i] = 1;
for(int i = 2;i<=m;i++)
{
for(int j = 2;j<=n;j++)
{
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
return dp[m][n];
}