当前位置: 首页 > news >正文

力扣62.不同路径

文章目录

  • 力扣62.不同路径
    • 题目描述
    • 方法1:暴力深搜(超时未通过)
    • 方法2:动态规划

力扣62.不同路径

题目描述

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。

机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。

问总共有多少条不同的路径?

示例 1:

输入:m = 3, n = 7
输出:28
示例 2:

输入:m = 3, n = 2
输出:3
解释:
从左上角开始,总共有 3 条路径可以到达右下角。

  1. 向右 -> 向下 -> 向下
  2. 向下 -> 向下 -> 向右
  3. 向下 -> 向右 -> 向下
    示例 3:

输入:m = 7, n = 3
输出:28
示例 4:

输入:m = 3, n = 3
输出:6

提示:

1 <= m, n <= 100
题目数据保证答案小于等于 2 * 109

方法1:暴力深搜(超时未通过)

使用最经典的深搜dfs模板搜索全部路线,每搜索到一个路线让全局变量count++,最终返回count,但由于其指数级的时间复杂度最终导致结果超时

int count=0;
void dfs(int m,int n,int **book,int i,int j)
{if(i==m-1&&j==n-1){count++;return;}if(i+1<m&&j<n&&book[i+1][j]==0){book[i+1][j]=1;dfs(m,n,book,i+1,j);book[i+1][j]=0;}if(i<m&&j+1<n&&book[i][j+1]==0){book[i][j+1]=1;dfs(m,n,book,i,j+1);book[i][j+1]=0;} 
}
int uniquePaths(int m, int n){
int **book=(int **)malloc(sizeof(int *)*m),i=0;
for(i=0;i<m;i++) book[i]=(int *)calloc(sizeof(int),n);
book[0][0]=1;
count=0;
dfs(m,n,book,0,0);
return count;
}

在这里插入图片描述

方法2:动态规划

思路:对于一个位置(i,j)的到达路线数,等于其正上方位置:(i-1,j)路线数加上其左边位置:(i,j-1)路线数之和。
即有状态转移方程:
dp[i][j]=dp[i−1][j]+dp[i][j−1]dp[i][j]=dp[i-1][j]+dp[i][j-1]dp[i][j]=dp[i1][j]+dp[i][j1]
开辟额外的O(mn)空间来存储每一位置的到达路线数
算法时间复杂度O(mn) 空间复杂度O(mn)

int uniquePaths(int m, int n){int results[m][n],i,j;for(i=0;i<m;i++) memset(results[i],0,sizeof(int)*n);results[0][0]=1;for(i=0;i<m;i++){for(j=0;j<n;j++){if(i-1>=0) results[i][j]+=(results[i-1][j]);if(j-1>=0) results[i][j]+=(results[i][j-1]);}}return results[m-1][n-1];
}

在这里插入图片描述

http://www.lryc.cn/news/12339.html

相关文章:

  • 【验证码的识别】—— 图形验证码的识别
  • RocketMQ云服务器和本地基础安装搭建及可视化控制台安装使用
  • JavaScript:简单理解防抖和节流,如何定义防抖和节流函数?
  • 【opencv 系列】第3章 图像的8种变换
  • 【C语言刷题】倒置字符串
  • 用switch语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式:
  • uboot编译分析
  • SpringCloud Alibaba集成Dubbo实现远程服务间调用
  • 网络编程(一)
  • PVE硬件直通之强制IOMMU分组
  • 深入讲解Kubernetes架构-node
  • XSS-labs-master
  • 「可信计算」助力TLS 传输更安全
  • 链表学习基础
  • springboot整合阿里云oss文件服务器
  • 数据分析:旅游景点销售门票和消费情况分析
  • Android问题解决方案(一):Android 打空包后提示没有”android:exported“的属性设置
  • Portraiture2023最新版人像图像后期处理软件
  • 链表OJ(七)删除有序链表中重复的元素-I -II
  • C语言经典编程题100例(81~100)
  • ChIP-seq 分析:数据质控实操(5)
  • java黑马头条 day5自媒体文章审核 敏感词过滤算法DFA 集成RabbitMQ实现自动审核
  • python--matplotlib(1)
  • 华为OD机试题 - 获取最大软件版本号(JavaScript)
  • 字符函数和字符串函数
  • 【猜名次】-C语言-题解
  • 对 equals() 和 hashCode() 的理解?
  • IDEA插件安装慢、超时、不成功问题如何解决?
  • 软考高级之信息系统案例分析七重奏-《5》
  • JUC并发编程 Ⅳ -- 共享模型之无锁