代码随想录算法训练营第36期DAY42

DAY42

62不同路径

AC了,舒服!待会看看优质解答。

  1. class Solution {
  2. public:
  3.     int uniquePaths(int m, int n) {
  4.         vector<vector<int>> dp(m,vector<int>(n,1));
  5.         for(int i=0;i<m;i++){
  6.             for(int j=0;j<n;j++){
  7.                 if(i!=0&&j!=0){
  8.                     dp[i][j]=dp[i][j-1]+dp[i-1][j];
  9.                 }
  10.             }
  11.         }
  12.         return dp[m-1][n-1];
  13.     }
  14. };

代码随想录题解:

  1. 图论深搜法:将路径化为到叶子的路。输出叶子结点的数量。这里主要学习深搜写法和思想:
  1. class Solution {
  2. public:
  3.     int dfs(int i,int j, int m,int n){
  4.         if(i>m||j>n) return 0;
  5.         if(i==m&&j==n) return 1;
  6.         return dfs(i+1,j,m,n)+dfs(i,j+1,m,n); 
  7.     }
  8.     int uniquePaths(int m, int n) {
  9.         return dfs(1,1,m,n);
  10.     }
  11. };

  1. 动态规划与自己写的一致
  2. 数论方法:

这里学习计算组合问题的模版,针对组合数C:

  1. class Solution {
  2. public:
  3.     //数论方法
  4.     int uniquePaths(int m, int n) {
  5.         long long fenzi=1;
  6.         int fenmu=m-1;
  7.         int count=m-1;
  8.         int fenzistart=m+n-2;
  9.         while(count--){
  10.             fenzi*=(fenzistart--);
  11.             while(fenmu!=0&&fenzi%fenmu==0){
  12.                 fenzi/=fenmu;
  13.                 fenmu--;
  14.             }
  15.         }
  16.         return fenzi;
  17.     }
  18. };

附上做的笔记:

DAY42

62不同路径

AC了,舒服!待会看看优质解答。

  1. class Solution {
  2. public:
  3.     int uniquePaths(int m, int n) {
  4.         vector<vector<int>> dp(m,vector<int>(n,1));
  5.         for(int i=0;i<m;i++){
  6.             for(int j=0;j<n;j++){
  7.                 if(i!=0&&j!=0){
  8.                     dp[i][j]=dp[i][j-1]+dp[i-1][j];
  9.                 }
  10.             }
  11.         }
  12.         return dp[m-1][n-1];
  13.     }
  14. };

代码随想录题解:

  1. 图论深搜法:将路径化为到叶子的路。输出叶子结点的数量。这里主要学习深搜写法和思想:
  1. class Solution {
  2. public:
  3.     int dfs(int i,int j, int m,int n){
  4.         if(i>m||j>n) return 0;
  5.         if(i==m&&j==n) return 1;
  6.         return dfs(i+1,j,m,n)+dfs(i,j+1,m,n); 
  7.     }
  8.     int uniquePaths(int m, int n) {
  9.         return dfs(1,1,m,n);
  10.     }
  11. };

  1. 动态规划与自己写的一致
  2. 数论方法:

这里学习计算组合问题的模版,针对组合数C:

  1. class Solution {
  2. public:
  3.     //数论方法
  4.     int uniquePaths(int m, int n) {
  5.         long long fenzi=1;
  6.         int fenmu=m-1;
  7.         int count=m-1;
  8.         int fenzistart=m+n-2;
  9.         while(count--){
  10.             fenzi*=(fenzistart--);
  11.             while(fenmu!=0&&fenzi%fenmu==0){
  12.                 fenzi/=fenmu;
  13.                 fenmu--;
  14.             }
  15.         }
  16.         return fenzi;
  17.     }
  18. };

附上做的笔记:

63不同路径ii

想对了,但是还差一点点:思维、手写模拟(别懒)、语法(多练多写多想)

不会做,卡在状态转移了:如果左边和上面都是0,显然是走不过来的,该怎么表示呢?

“有障碍的话,其实就是标记对应的dp table(dp数组)保持初始值(0)就可以了”这一点倒是做到了。

手写模拟,多画图!初始化:x轴和y轴,障碍物之后的格子都是0了。写for一旦obstacle就退出循环了,那么其他的就是保持初始值0. 还有:如果ob为1,那么就continue 不去计算它的dp(能保持加0)

写一遍:

  1. class Solution {
  2. public:
  3.     int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {
  4.         vector<vector<int>> dp(obstacleGrid.size(),vector<int>(obstacleGrid[0].size(),0));
  5.         //起点/终点有障碍 0;
  6.         if(obstacleGrid[0][0]==1||obstacleGrid[obstacleGrid.size()-1][obstacleGrid[0].size()-1]==1return 0;
  7.         for(int i=0;i<obstacleGrid.size()&&obstacleGrid[i][0]!=1;i++) dp[i][0]=1;
  8.         for(int i=0;i<obstacleGrid[0].size()&&obstacleGrid[0][i]!=1;i++) dp[0][i]=1;
  9.         for(int i=1;i<obstacleGrid.size();i++){
  10.             for(int j=1;j<obstacleGrid[0].size();j++){
  11.                 if(obstacleGrid[i][j]==1continue;
  12.                 dp[i][j]=dp[i-1][j]+dp[i][j-1];
  13.             }
  14.         }
  15.         return dp[obstacleGrid.size()-1][obstacleGrid[0].size()-1];
  16.     }
  17. };

细节:从1开始循环。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/17065.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GM Bali,OKLink受邀参与Polygon AggIsland大会

5月16日-17日&#xff0c;OKLink 受到生态合作伙伴 Polygon 的特别邀请&#xff0c;来到巴厘岛参与以 AggIsland 为主题的大会活动并发表演讲&#xff0c;详细介绍 OKLink 为 Polygon 所带来的包括多个浏览器和数据解析等方面的成果&#xff0c;并与 Polygon 一起&#xff0c;对…

MPJLambdaWrapperX leftJoin 用法

MPJLambdaWrapperX 是 Mybatis-Plus 的一个扩展类&#xff0c;用于构造更复杂的数据表关联查询条件。它主要用于实现 SQL 的 JOIN 操作&#xff0c;如 LEFT JOIN、RIGHT JOIN 等。下面重点介绍如何使用 MPJLambdaWrapperX 来完成 LEFT JOIN 操作。 基本用法 首先确保你的项目…

python打印exception信息

一直以为掌握以下内容就够了。 try:#正常执行语句pass except:#如果正常执行语句不对&#xff0c;执行替代语句pass finally:不论正常执行语句执行如何&#xff0c;最后都会执行.finally这部分可以省略pass因为我try部分写的业务逻辑复杂&#xff0c;配置了多少活动&#xff0…

Apache Flink CDC 3.1.0版本知识学习

Apache Flink CDC 3.1.0版本知识学习 一、Flink CDC 3.1 快速预览二、Transformation 支持三、分库分表合并支持四、使用 Kafka Pipeline Sink 高效写入 Canal/Debezium 格式数据五、更高效地实时入湖 Paimon六、其他改进七、Flink CDC 3.1 版本兼容性 一、Flink CDC 3.1 快速预…

代码随想录算法训练营第四十一天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

代码随想录算法训练营第四十一天 509. 斐波那契数 题目链接&#xff1a;509. 斐波那契数 动规五部曲&#xff1a; 确定dp数组以及下标的含义&#xff1a;第i个数的斐波那契数值是dp[i]确定递推公式&#xff1a;dp[i] dp[i - 1] dp[i - 2];dp数组如何初始化&#xff1a;dp[…

汽车电子专栏目录一览

最近开始整理汽车电子专栏的目录。 方便找到想要的内容&#xff0c;与大家一起学习。 目录 一、 AUTOSAR规范与ECU软件开发篇幅目录 二、 CDD复杂驱动讲解篇幅目录 三、ETAS的运用 四、自动驾驶芯片驾驶芯片 五、三电技术 六、S32KXXMCU&#xff08;NXP汽车常用芯片&…

phpmyadmin漏洞汇总

phpmyadmin是一个非常常用的框架&#xff0c;所以学习它的常见漏洞是非常必要的。 参考大佬的文章进行自学&#xff1a;最全phpmyadmin漏洞汇总_phpmyadmin弱口令-CSDN博客 目录 phpmyadmin简介 查看phpmyadmin版本 漏洞及利用 万能密码登入 影响版本 漏洞POC 远程代码…

【MySQL精通之路】数据类型

目录 1.数字数据类型 1.1 数字数据类型语法 1.2 整数类型&#xff08;精确值&#xff09;-Integer、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT 1.3 定点类型&#xff08;精确值&#xff09;-DECIMAL&#xff0c;NUMERIC 1.4 浮点类型&#xff08;近似值&#xff09;-FLOA…

【传知代码】无监督动画中关节动画的运动表示(论文复现)

前言&#xff1a;在数字动画的广袤领域中&#xff0c;关节动画以其真实、流畅的运动表现&#xff0c;一直占据着举足轻重的地位。无论是电影中的震撼特效&#xff0c;还是游戏世界的角色互动&#xff0c;关节动画都以其细腻的运动表现&#xff0c;赋予虚拟世界以生动与活力。然…

Excel某列中有不连续的数据,怎么提取数据到新的列?

这里演示使用高级筛选的例子&#xff1a; 1.设置筛选条件 在D2单元格输入公式&#xff1a;COUNTA(A4)>0 这里有两个注意事项&#xff1a; *. 公式是设置在D2单元格&#xff0c;D1单元格保持为空&#xff0c; **. 为什么公式中选A4单元格&#xff0c;A列的第一个数据在A3…

CPU数据传送控制方式

引入 为了实现CPU与I/O设备信息交换的同步 无条件传送 示例1&#xff1a; 示例2&#xff1a; 程序查询方式 引入 工作过程 单个外设 多个外设 特点 中断传送方式 工作过程 特点 DMA 概述 DMAC功能 总线请求信号HOLD 总线请求响应信号HOLDA 工作过程 小结

代码随想录算法训练营第五十九天

想想其实坚持下来也不是很难&#xff0c;不过有很多题做一遍应该是记忆没那么深&#xff0c;anyway&#xff0c;要继续往换工作的方向走啊。加油&#xff01;&#xff01; 503.下一个更大元素II 想对了地方&#xff0c;但是没有坚持&#xff0c;应该搞两遍&#xff0c;就把所有…

景源畅信:新手做抖音运营难不难?

在这个信息爆炸的时代&#xff0c;社交媒体平台如抖音已经成为了人们日常生活中不可或缺的一部分。随着抖音的兴起&#xff0c;越来越多的人开始尝试进入这个领域&#xff0c;希望通过抖音运营实现自己的价值。然而&#xff0c;对于新手来说&#xff0c;抖音运营是否真的容易呢…

海光DCU编译安装Cupy

现在国产GPU比较重视AI&#xff0c;大都对Pytorch和TensorFlow做了移植。但是像Numpy&#xff0c;cupy这些科学计算库也非常重要&#xff0c;数据分析和处理也是一个非常大的需求。 Cupy对AMD的Rocm的支持目前还是实验性的&#xff0c;只支持4.3和5.0两个版本。海光DCU与 Rocm…

文心智能体大赛:情深智导

情深智导 概述限制澄清个性化 预览体验 概述 情深向导&#xff0c;致力于为您和您的孩子提供科学、个性化的情感支持与指导。无论您在家庭教育上遇到什么困惑&#xff0c;或是想了解孩子的内心世界&#xff0c;我都会在您身边&#xff0c;与您共同探索&#xff0c;助力亲子关系…

keepalived交叉编译

前言 Keepalived可以实现对服务器的健康检查&#xff0c;当主服务器出现故障时&#xff0c;自动将服务切换到备份服务器上&#xff0c;确保服务的连续性&#xff0c;避免单点故障。它还可以管理一个虚拟 IP 地址&#xff0c;在主备服务器之间进行灵活切换&#xff0c;对外提供…

使用 Python 编程语言进行供应链分析

前言 要分析一家公司的供应链&#xff0c;我们需要供应链不同阶段的数据&#xff0c;如有关采购、制造、运输、库存管理、销售和客户人口统计的数据。我为这项任务找到了一个理想的数据集&#xff0c;其中包括一家时尚和美容初创公司的供应链数据。 1. 相关数据集 让我们导入…

【C++风云录】进化计算框架全览:遗传算法与优化

打开进化计算世界的大门&#xff1a;从多维度了解进化计算框架与库 前言 在复杂的计算领域&#xff0c;进化计算框架和算法库扮演着至关重要的角色。本文将探讨和比较六种不同的进化计算框架和库&#xff0c;包括EO、Pagmo、Shark、ParadisEO、GALib及Open BEAGLE。 欢迎订阅…

打造坦克游戏:类方法的深入解析

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;坦克游戏与类方法的结合 二、坦克类的属性与方法概述 1. 属性定义与初…

Modbus协议基础

文章目录 Modbus概述Modbus TCP/IP Modbus概述 Modbus是由Modicon&#xff08;现为施耐德电气公司的一个品牌&#xff09;在1979年发明的&#xff0c;是全球第一个真正用于工业现场的应用层总线协议。 为更好地普及和推动Modbus在基于以太网上的分布式应用&#xff0c;目前施…