题目
看到第一题,第一反应dfs,太麻烦了,肯定超时,算了吧哈哈哈
仔细一看,这不就是个数学题吗,总共需要走的步数是m+n-2,取出(m-1)和(n-1)当中较小的那一个,做排列组合就行。
看网上的答案,是用dp。每一步的到达是由上面一步和左面一步来达到。
即dp[i][j]=dp[i-1][j]+dp[i][j-1]
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp = new int[n][m];
for(int i=0;i<n;i++){
dp[i][0] = 1;
}
for(int j=0;j<m;j++){
dp[0][j] = 1;
}
for(int i=1;i<n;i++){
for(int j=1;j<m;j++){
dp[i][j] = dp[i-1][j] + dp[i][j-1];
}
}
return dp[n-1][m-1];
}
}