//第一行全1,第一列全1,其他位置为其左上和正上之和。 int uniquePaths(int m, int n ) { int a[100][100] = {0}; int i = 0, j = 0; for(i = 0; i < m; i++) a[i][0] = 1; //给第一列全赋值为1 for(i = 0; i < n; i++) a[0][i] = 1; //给第一行全赋值为1 for(i = 1; i < m; i++) for(j = 1; j < n; j++) a[i][j] = a[i-1][j] + a[i][j-1]; return a[m-1][n-1]; }
1.a[0][0]-a[0][n]是第一行;a[0][0]-a[m][0]是第一列,注意别搞混了。
2.关键是理解,要到某个点,只能从左边或者上边,那么就是两种路径之和,依此类推
a[i][j] = a[i-1][j] + a[i][j-1];