描述:

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. OMAP4之DSP核(Tesla)软件开发学习(一)

    目的:       目前手上正在OMAP4上做东西,由于涉及到大量运算,交给arm A9双核发现运算速度很慢,不能满足需求.故考虑将大量运算任务(比如FIR.FFT.卷积.图像处理.向量运算等)交给O ...

  2. Ethereum部署私有合约常见问题汇总

    常见问题 问题1 问题描述: callback contain no result Error: authentication needed: password or unlock 这里的问题是当前所 ...

  3. IDEA java开发学习笔记

    JDK8下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 配置环境变量 ...

  4. bzoj2337 XOR和路径

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2337 首先:因为是异或和,所以可以考虑每一位考虑. 就在每一位上求一下该位是1的概率,乘以1 ...

  5. windows server 2008 HPC Edtion激活教程

    KMS激活指南 本服务器根据俄罗斯KMS服务器VMWARE架设,不受时间限制 KMS激活支持的Windows版本:Windows 2008, Windows 2008 R2 全系列产品Vista, W ...

  6. linux Posix 信号量 一

    信号量是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语. linux提供两种信号量,“内核信号量”和“用户态进程信号量”,“用户态信号量”又分为“Posix”,“System V”信号 ...

  7. make 写法练习

    cc=g++ all:signal %:%.o $(cc) -o $< $@ %.cpp:%.o echo se $< $@ $* $^ g++ -c $< $@cl: rm -rf ...

  8. hackerrank Week of Code 31

    https://www.hackerrank.com/contests/w31/challenges Beautiful Word 模拟 Accurate Sorting 检查每个数字距离原位是否都不 ...

  9. postman全方位讲解(有空看下)

    Postman 接口测试神器 Postman 是一个接口测试和 http 请求的神器,非常好用. 官方 github 地址: https://github.com/postmanlabs Postma ...

  10. [转]C# 测试网络连接

    原文链接:http://blog.csdn.net/lsfa1234/article/details/6291228 using System; using System.Web; using Sys ...