unique-paths

题目描述

一个机器人在m×n大小的地图的左上角(起点,下图中的标记“start"的位置)。
机器人每次向下或向右移动。机器人要到达地图的右下角。(终点,下图中的标记“Finish"的位置)。
可以有多少种不同的路径从起点走到终点?
 
上图是3×7大小的地图,有多少不同的路径?
备注:m和n小于等于100
 
开二维数组动态规划:
 1 import java.util.*;
 2 
 3 
 4 public class Solution {
 5     /**
 6      * 
 7      * @param m int整型 
 8      * @param n int整型 
 9      * @return int整型
10      */
11     public int uniquePaths (int m, int n) {
12         int[][] dp=new int[m][n];
13         for(int i=0;i<m;i++){
14             dp[i][0]=1;
15         }
16         for(int i=0;i<n;i++){
17             dp[0][i]=1;
18         }
19         for(int i=1;i<m;i++){
20             for(int j=1;j<n;j++){
21                 dp[i][j]=dp[i-1][j]+dp[i][j-1];
22            }
23         }
24         return dp[m - 1][n - 1];
25     }
26 }

备忘录递归法:

 1 import java.util.*;
 2 
 3 
 4 public class Solution {
 5     /**
 6      * 
 7      * @param m int整型 
 8      * @param n int整型 
 9      * @return int整型
10      */
11     int[][] hash=new int[200][200];
12     public int uniquePaths (int m, int n) {
13         if(m<0||n<0) return -1;
14         if(m==1||n==1) return 1;
15         if(hash[m][n]!=0) return hash[m][n];
16         hash[m][n]=uniquePaths(m-1,n)+uniquePaths(m,n-1);
17         return hash[m][n];
18     }
19 }

 

 
posted @ 2020-07-24 15:48  打屎也不熬夜  阅读(76)  评论(0编辑  收藏  举报