博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Unique Paths
阅读量:5017 次
发布时间:2019-06-12

本文共 1663 字,大约阅读时间需要 5 分钟。

class Solution {public:    int uniquePaths(int m, int n) {        int (*dp)[101] = new int[101][101];        for (int i=0;i<101;i++) dp[0][i] = 0;        for (int i=0;i<101;i++) dp[i][0] = 0;        dp[0][1] = 1;        for (int i=1; i<=m; i++) {            for (int j=1; j<=n; j++) {                // to reach (i,j), we can move from                 // 1. (i, j-1), move right 1 block                // 2. (i-1, j), move down 1 block                dp[i][j] = dp[i][j-1] + dp[i-1][j];            }        }        return dp[m][n];    }};

1. 存在直接的计算公式组合数C(m+n-2, n-1),在m+n-2步移动中选取n-1或m-1种为相应维度上的移动方式(向右或向下)

2. 采用动态规划,要是学高级数据结构时老师能先举个这样简单的例子就好了。

dp[i][j]代表到达坐标(i, j)(i、j从1开始编号)的路径种数,因为题目规定只能向右或者向下移动,所以在dp[i][j]的上一步,其坐标肯定是

  • (i, j-1), 向右移动得到(i, j)
  • (i-1, j), 向下移动得到(i, j)

那么到达(i, j)的路径总数就是这两种情况的和即dp[i][j] = dp[i-1][j] + dp[i][j-1]

 

不过题目虽然说 "m and n will be at most 100.", 但是其测试数据显然没有达到这个范围,因为返回的是int类型,而这个问题的解数目会迅速增加,(100, 100)时数量级别是10的58次方,或许答案可以改为mod一个数后的取值。

第二轮:

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

The robot can only move either down or right at any point in time. The robot is trying to reach the bottom-right corner of the grid (marked 'Finish' in the diagram below).

How many possible unique paths are there?

Above is a 3 x 7 grid. How many possible unique paths are there?

Note: m and n will be at most 100.

可以把上面dp的数组简化到一维:

// 13:10class Solution {public:    int uniquePaths(int m, int n) {        if (m <= 0 || n <= 0) return 0;        int* dp = new int[n+1];        for(int i=0; i<=n; i++) dp[i] = 0;        dp[1] = 1;        for (int i=0; i

 

转载于:https://www.cnblogs.com/lailailai/p/3600928.html

你可能感兴趣的文章
BZOJ 4241: 历史研究
查看>>
Jaxb 解析 带有继承关系的bean与xml
查看>>
沉浸式主题下软键盘问题
查看>>
abap 动态控制状态栏按钮
查看>>
HDU 2568[前进]模拟
查看>>
Python——wordcloud
查看>>
mysql 5.7 迁移数据方案
查看>>
输出日历
查看>>
转:ffmpeg怎么样处理网络流
查看>>
HDU 1290 献给杭电五十周年校庆的礼物(面分割空间 求得到的最大空间数目)
查看>>
前端之JavaScript
查看>>
ylb:子查询(嵌套子查询)和子查询(相关子查询)
查看>>
DBS-Tally book(记账本)
查看>>
java基础知识四 math类 字符 字符串 控制台输入输出 StringBuilder与StringBuffer
查看>>
查看git安装目录
查看>>
简单工厂模式 实现加减乘除
查看>>
POJ2411骨牌覆盖——状压dp
查看>>
51nod 1301 集合异或和——异或dp
查看>>
CentOS7上安装Pycharm
查看>>
正则表达式
查看>>