LintCode 114 不同的路径
2016-12-25 15:14
295 查看
本人电子系,只为一学生。心喜计算机,小编以怡情。
有一个机器人的位于一个M×N个网格左上角(下图中标记为’Start’)。机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角(下图中标记为’Finish’)。
问有多少条不同的路径?
第一次尝试用的递归,超时了,失败了。。。
public int uniquePaths(int m, int n) { // write your code here if(n==1||m==1) return 1; return uniquePaths(m, n-1)+uniquePaths(m-1, n); }
然后发现要用动态规划。。。
然而我还没学。。于是看了爬楼梯和数兔子,迷迷糊糊
反正序列规律是1,2,3,5,8,13,21……..
然后我就猜着写了代码,第一次失败了,原因在注释,后来改了,成功了
public int uniquePaths(int m, int n) { // write your code here if(n==1||m==1) return 1; int temp[][]=new int [m] ;//带记忆功能的,以空间作为代价减轻时间,不过应该有更好的方法,我暂时没想到 ////////////////////////////// for(int i=1;i<m;i++) temp[i][0]=1; for(int j=1;j<n;j++) temp[0][j]=1; //这段必须有,要给边界初始化为1。没有这段的话比如2*3矩阵,最右下角元素=左边值+上边值, //结果上边是0的话显然是错误的,因为上边(是边界)必然有一条道路 /////////////////////////// temp[0][1]=1; temp[1][0]=1; //中规中矩的动态规划 for(int i=1;i<m;i++) for(int j=1;j<n;j++) { //当前的次数=左边的次数+上面的次数 temp[i][j]=temp[i-1][j]+temp[i][j-1]; } return temp[m-1][n-1]; }
相关文章推荐
- lintcode-不同的路径-114
- LintCode UniquePaths 不同的路径
- LintCode刷题——不同的路径
- lintcode-不同的路径II-115
- LintCode -- 不同的路径
- LintCode UniquePathsII 不同的路径II
- LintCode: 114. 不同的路径 Java
- lintcode unique-paths-ii 不同的路径ii
- lintcode--二叉树中的最大路径和
- LintCode 不同的二叉查找树
- lintcode-421-简化路径
- LintCode:不同的二叉查找树
- LintCode2016年算法比赛----二叉树的所有路径
- LintCode-二叉树中的最大路径和
- lintcode----二叉树的所有路径
- LintCode 二叉树的所有路径
- LintCode-二叉树的所有路径
- 114 - 不同的路径
- Lintcode 376. 二叉树的路径和
- lintcode(480)——二叉树的所有路径