# 不同路径

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

 

示例 1:

输入:m = 3, n = 7
输出:
28

示例 2:

输入:m = 3, n = 2
输出:
3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。
1. 向右 -> 向下 -> 向下
2. 向下 -> 向下 -> 向右
3. 向下 -> 向右 -> 向下

示例 3:

输入:m = 7, n = 3
输出:
28

示例 4:

输入:m = 3, n = 3
输出:
6

 

提示:

## template ```cpp #include #include static int uniquePaths(int m, int n) { int row, col; int *grids = malloc(m * n * sizeof(int)); for (col = 0; col < m; col++) { grids[col] = 1; } for (row = 0; row < n; row++) { grids[row * m] = 1; } for (row = 1; row < n; row++) { for (col = 1; col < m; col++) { grids[row * m + col] = grids[row * m + col - 1] + grids[(row - 1) * m + col]; } } return grids[m * n - 1]; } int main(int argc, char **argv) { if (argc != 3) { fprintf(stderr, "Usage: ./test m n\n"); exit(-1); } printf("%d\n", uniquePaths(atoi(argv[1]), atoi(argv[2]))); return 0; } ``` ## 答案 ```cpp ``` ## 选项 ### A ```cpp ``` ### B ```cpp ``` ### C ```cpp ```