描述:

m*n的矩阵,从左上角走到右下角,只能向下或向右走。

解决:

简单dp,dp[i][j]表示到i,j这点总共多少种路径。

dp[i][j] = dp[i][j - 1] + dp[i - 1][j],化为一维:

int uniquePaths(int m, int n) {
int* arr = new int[m]();
for (int i = ; i < m; ++i) // 初始化
arr[i] = ; for (int i = ; i < n; ++i) {
for (int j = ; j < m; ++j) {
if (j == )
arr[] = ;
arr[j] = arr[j - ] + arr[j];
}
}
return arr[m - ];
}

注意,1*1的化结果是1的,如果别的题目是0,初始化里i改为从1开始即可。

也可以用数学点的方法解决,m*n的矩阵,假设m是行,则无论怎么走总会向下走m步,向右走n步,

即从m+n中选m个点,剩下为n,即C(m, m+n),组合,朴素解法:

int uniquePaths(int m, int n) {
int sum = m + n - ;
int c = min(m - , n - );
long ret = ;
long chu = ; for (int i = ; i < c; ++i)
ret *= sum--;
for (int i = ; i <= c; ++i)
chu *= i;
return ret/chu;
}

在leetcode可以过,但有快速计算组合数的算法。


dp复杂度:O(m*n)

算组合数复杂度:不大于O(m!),这只是大概的数量级,还有logm的求法。

注意:实际100的阶乘非常大,大于long类型最大值。

leetcode 62 不同的路径的更多相关文章

  1. LeetCode 高效刷题路径

    LeetCode 高效刷题路径 Hot 100 https://leetcode.com/problemset/hot-100/ https://leetcode-cn.com/problemset/ ...

  2. [LeetCode] 62. Unique Paths 不同的路径

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  3. LeetCode 62. Unique Paths(所有不同的路径)

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  4. [LeetCode] 62. Unique Paths 唯一路径

    A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). The ...

  5. LeetCode.62——不同路径

    问题描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为 ...

  6. Java实现 LeetCode 62 不同路径

    62. 不同路径 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中 ...

  7. LeetCode 62.不同路径(C++)

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问总共有多 ...

  8. LeetCode 62 不同路径

    一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ).机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角.问总共有多少条不同的路径? 示例 1: 输入: ...

  9. LeetCode 62. Unique Paths不同路径 (C++/Java)

    题目: A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ...

随机推荐

  1. New Concept English Two 16 40

    Keynote Speech  are useful. $课文38  唯独没有考虑到天气 388. My old friend, Harrison, had lived in the Mediterr ...

  2. 李氏滑动事件冲突解决方案 之 处理子ViewGroup的超棒方案

    父ViewGroup(CurView) 和 子 ViewGroup(ParentView) 滑动事件冲突解决方案 之 处理子ViewGroup的超棒方案: 子ViewGroup 以 SlipRelat ...

  3. Linux C 数据结构 ->单向链表<-(~千金散尽还复来~)

    之前看到一篇单向链表的博文,代码也看着很舒服,于是乎记录下来,留给自己~,循序渐进,慢慢 延伸到真正的内核链表~(敢问路在何方?路在脚下~) 1. 简介 链表是Linux 内核中最简单,最普通的数据结 ...

  4. 腾讯云 服务器 ubuntu 16.04 python3 环境

    积分 - 164 排名 - 183650 首先把腾讯云上的服务器,重装系统,选择64位ubuntu16.04,最低配也要用64位的…… 装好后,首先切换 python 版本: sudo update- ...

  5. 重启Tomcat还可以这样玩的哦

  6. 利用U盘大白菜软件来重装win7系统

    个人装win7系统用了两个U盘,一个做启动盘(FAT32格式),另外一个当做系统盘(NTFS格式). 首先在电脑里面下载一个大白菜软件,并且安装好,打开软件,插上U盘,检测到了该U盘即可一键制作启动盘 ...

  7. lambda,reduce,filter用法

    1.lambda的用法 sum = lambda arg1,arg2:arg1+arg2 sum(10,20) --->30 | | 实际上是def sum(arg1,arg2) return ...

  8. Jmeter-线程组执行顺序控制

    线程组按顺序来执行,大概思路, 1.需要控制线程组内的操作在满足某一条件才执行,那么就需要使用if或者while: 2.要使用if或者while都需要一个变量,而这个变量要在两个或多个线程组内使用,那 ...

  9. HDU1502 Regular Words DP+大数

    要是c语言可以和java一样写大数就好了,或者我会写重载就好了,最后还是只能暴力一把. 开始写的记忆化搜索,然而n=10就超过LL了 #include<cstdio> #include&l ...

  10. Reusing & Composing GraphQL APIs with GraphQL Bindings

    With GraphQL bindings you can embed existing GraphQL APIs into your GraphQL server. In previous blog ...