题目:
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
用例: 3*2的方格 共3条路径; 7*3的方格 共28条路径。
思路:因为机器人每次只能向下或者向右移动一步,所以机器人在走到右下角那个格子之前,就必须走到蓝色或红色的这个方格里,那么总路径数就是机器人从起点到红色方格的路径总数加上机器人从起点到蓝色方格的路径总数,以此类推,就能求出总路径数。此题跟青蛙踩阶梯的那道题很相似:“假如有10步台阶,一次可走一步或两步,那么要走到达台阶顶,有几种走法”。因此我们可用递归的方式完成。具体代码如下:
- int uniquePaths1(int m, int n)
- {
- if (m <= 0 || n <= 0)
- {
- return 0;
- }
- if (m == 1 || n == 1)
- {
- return 1;