动态规划Day02

62.不同路径

力扣题目链接(opens new window)

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

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

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

看到题目的第一想法

        dp ,看到达网格位置有多少种不同的路径

看到代码随想录之后的想法

        动规五部曲,很快的写出解题思路

        1确定dp数组以及对应下标的含义

        dp[i][j] 到达i j 位置有多少中不同的路径

        2确定递推公式

        dp[i][j] = dp[i-1][j]+dp[i][j-1]

        3dp数组初始化

        需要把第一行和第一列都初始化,都为1

        4确定遍历顺序

        从上往下,从前往后

        5手动推导dp数组

        6打印dp数组

        打印dp[m-1][n-1]

自己实现过程中遇到的困难

        注意初始化

class Solution {public int uniquePaths(int m, int n) {//确定dp数组,和下标的含义//dp[m-1][n-1] 代表到达需要的路径总数//确定递推公式// dp[i][j]=dp[i-1][j]+dp[i][j-1]//dp数组如何初始化//dp[0][0]=1 dp[0][1]=1 dp[0][2]=2 ...dp[1][0]=1//确定遍历顺序//双重for循环 i j//打印dp数组int[][] paths = new int[m][n];for(int i=0;i<m;i++){//这里应该是1  之前看成i了paths[i][0]=1;}for(int j=0;j<n;j++){paths[0][j]=1;}for(int i=1;i<m;i++){for(int j=1;j<n;j++){paths[i][j]=paths[i-1][j]+paths[i][j-1];}}return paths[m-1][n-1];}
}

63. 不同路径 II

力扣题目链接(opens new window)

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

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

现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?

看到题目的第一想法

        dp ,看到达网格位置有多少种不同的路径

看到代码随想录之后的想法

        动规五部曲,很快的写出解题思路

        1确定dp数组以及对应下标的含义

        dp[i][j] 到达i j 位置有多少中不同的路径

        2确定递推公式

        若为障碍物 dp[i][j]则置为0

        dp[i][j] = dp[i-1][j]+dp[i][j-1]

        3dp数组初始化

        需要把第一行和第一列都初始化,都为1,若遇到障碍物则都为0

        4确定遍历顺序

        从上往下,从前往后

        5手动推导dp数组

        6打印dp数组

        打印dp[m-1][n-1]

自己实现过程中遇到的困难

        没有注意到只能向下和向右

        注意这个for循环的写法 j<obstacleGrid[0].length&&obstacleGrid[0][j]!=1

         for(int j=0;j<obstacleGrid[0].length&&obstacleGrid[0][j]!=1;j++){
            dp[0][j]=1;   
        }

class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {//卡哥纠错:注意题意只能向右和向下走//确定dp数组下标的含义//到达这个位置所需要的路径数目,如果有阻碍,置为0//确定递推公式//dp[i][j]=dp[i-1][j]+dp[i][j-1]//确定遍历顺序//i j//dp数组初始化// 边界为1 如果有阻碍为0//打印dp数组//return dp[m][n]if(obstacleGrid[0][0]==1&&obstacleGrid[obstacleGrid.length-1][obstacleGrid[0].length-1]==1){return 0;}//如果每一行全为1 or 某一列全为1 则无法满足 int[][] dp = new int[obstacleGrid.length][obstacleGrid[0].length];/*for(int i=0;i<obstacleGrid.length;i++){if(obstacleGrid[i][0]==1){dp[i][0]=0;}else{dp[i][0]=dp[i-1][0];}}for(int j=0;j<obstacleGrid[0].length;j++){if(obstacleGrid[0][j]==1){dp[0][j]=0;}else{dp[0][j]=dp[0][j-1];}}*///卡哥思路,若初始化有障碍,后面都为0,我的写法复杂了点for(int i=0;i<obstacleGrid.length&&obstacleGrid[i][0]!=1;i++){dp[i][0]=1;}for(int j=0;j<obstacleGrid[0].length&&obstacleGrid[0][j]!=1;j++){dp[0][j]=1;}for(int i=1;i<obstacleGrid.length;i++){for(int j=1;j<obstacleGrid[0].length;j++){if(obstacleGrid[i][j]==1){dp[i][j]=0;}else{dp[i][j] = dp[i-1][j]+dp[i][j-1];}}}return dp[obstacleGrid.length-1][obstacleGrid[0].length-1];}
}

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

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

相关文章

WPF XAML(一)

一、XAML的含义 问&#xff1a;XAML的含义是什么&#xff1f;为什么WPF中会使用XAML&#xff1f;而不是别的&#xff1f; 答&#xff1a;在XAML是基于XML的格式&#xff0c;XML的优点在于设计目标是具有逻辑性易读而且简单内容也没有被压缩。 其中需要提一下XAML文件在 Visu…

HR_net逐步实现过程(2.2)

1.numpy实现数组卷积操作 这里是一个矩阵&#xff0c;换个图试一下 import numpy as np #输入数组 input_imagenp.array([[1,2,3],[4,5,6],[7,8,9]]) #卷积核 kernelnp.array([[1,0],[0,1]]) #卷积操作 output_imagenp.zeros((2,2)) for i in range(2):for j in range(2):out…

1886_emacs_v29中的行号配置

Grey 全部学习内容汇总&#xff1a; GitHub - GreyZhang/editors_skills: Summary for some common editor skills I used. emacs 29中的行号显示配置 行号显示 行号显示是一个编辑器中很常见的功能&#xff0c;我觉得这个功能的需求度可能因人群或者个人习惯而不同。对于只…

【python、pytorch】NLP模型

自然语言处理&#xff08;Natural Language Processing&#xff0c;简称NLP&#xff09;是计算机科学与语言学中关注于计算机与人类语言间转换的领域。 1. 文本预处理 文本预处理详情 4. RNN模型

如何给字符串字段添加索引

MySQL是支持前缀索引的&#xff0c;可以定义字符串的一部分作为索引&#xff0c;如果创建索引的语句不指定前缀长度&#xff0c;那么索引就会包含整个字符串。 alter table SUser add index index1(email);alter table SUser add index index2(email(6)); 如上两个创建索引的语…

完整的模型训练套路(一、二、三)

搭建神经网络 model import torch from torch import nn#搭建神经网络 class Tudui(nn.Module):def __init__(self):super(Tudui, self).__init__()self.model nn.Sequential(nn.Conv2d(3, 32, 5, 1, 2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, 1, 2),nn.MaxPool2d(2),nn.Conv…

Godot游戏引擎有啥优势

游戏开发是一个充满创造力和技术挑战的领域。选择适合的游戏引擎是开发过程中至关重要的决策。在众多的游戏引擎中&#xff0c;Godot以其许多的优势吸引着越来越多的开发者。下面简单的介绍一下Godot游戏引擎的优势。 免费和开源 Godot游戏引擎的免费和开源特性是优势之一。开…

动态规划day03

343. 整数拆分(第二次做还是没弄明白) 力扣题目链接(opens new window) 给定一个正整数 n&#xff0c;将其拆分为至少两个正整数的和&#xff0c;并使这些整数的乘积最大化。 返回你可以获得的最大乘积。 示例 1: 输入: 2输出: 1解释: 2 1 1, 1 1 1。 示例 2: 输入: …

redis 相关面试题(一)

redis 相关面试题&#xff08;一&#xff09; 文章目录 redis 相关面试题&#xff08;一&#xff09;**面试官**&#xff1a;什么是缓存穿透 ? 怎么解决 ?**面试官**&#xff1a;好的&#xff0c;你能介绍一下布隆过滤器吗&#xff1f;**面试官**&#xff1a;什么是缓存击穿 …

Vue2-导航守卫

在Vue中&#xff0c;导航守卫是一组用于控制路由导航的钩子函数。这些钩子函数允许你在路由导航的不同阶段执行一些操作&#xff0c;比如在路由切换之前进行验证、处理路由变化等。 Vue提供了三种类型的导航守卫&#xff1a; 全局前置守卫&#xff1a;在路由切换之前执行&…

C语言通过ODBC函数操作Access数据库(mdb和accdb格式)(char字符数组)

编译环境&#xff1a;Windows XP Visual Studio 2010 数据库&#xff1a;Access 2010&#xff0c;accdb格式 本例程只使用char[]字符数组&#xff0c;不使用wchar_t[]字符数组&#xff0c;更适合C语言初学者。 如果读取字符串时&#xff0c;提供的字符数组空间小了&#xff0c…

【Linux】Linux 系统编程——tree 命令

文章目录 1. 命令概述2. 命令格式3. 常用选项4. 相关描述4.1 tree 命令安装 5. 参考示例5.1 创建树形目录5.2 使用 tree 命令查看树形目录 1. 命令概述 tree 命令用于在命令行界面以树状图形式显示目录及其子目录的内容。这个命令递归地列出所有子目录&#xff0c;并可选择显示…

如何设置 QTableView 表格每列数据的对齐方式?

要设置 QTableView 表格每列数据的对齐方式&#xff0c;您可以使用 QStandardItemModel 的 setData() 方法来为每个单元格设置对齐方式。以下是一个示例&#xff1a; // 创建数据模型和设置表头略...// 设置列对齐方式 model->setData(model->index(0, 0), Qt::AlignLef…

C#,迭代深化搜索(IDS)或迭代深化深度优先搜索(IDDFS)算法的源代码

摘要&#xff1a;本文介绍适合于大数据规模情况下的&#xff0c;新型的迭代深化深度优先搜索(IDDFS)算法的原理、实例及实现的C#源代码。 引言 常用的树&#xff08;或图&#xff09;遍历算法是两种&#xff1a; 广度优先搜索算法&#xff08;BFS&#xff09; 和 深度优先搜索…

EasyExcel的追加写入(新增POI、CSV)

总结&#xff1a;目前市面上流行的2种 EasyExcel和POI都不是真正的对物理excel文件进行追加导入。只是在缓存里面追加&#xff0c;最后一次性写入&#xff0c;并不能解决内存占用问题。 1.EasyExcel2.POI3.CSV 无非就是下面两种逻辑&#xff1a; 1.for循环查询数据&#xff0c;…

js中对数字,超大金额(千位符,小数点)格式化处理

前言 这个问题的灵感来自线上一个小bug&#xff0c;前两天刚看完同事写的代码&#xff0c;对数字类型处理的很好&#xff0c;之前一直都是用正则和toFixed(2)处理数字相关&#xff0c;后面发现使用numeral.js处理更完美。 对于下面这种数据的处理&#xff0c;你能想到几种方法…

燃情瞬间,智能酒精壁炉点亮户外聚会新潮流

在户外聚会中&#xff0c;一种备受瞩目的装饰品和功能性家居设备正逐渐崭露头角&#xff0c;那就是智能酒精壁炉。这种独特的户外装置不仅为聚会场合带来独特的氛围&#xff0c;还具有许多引人注目的优势。 其明亮的火焰不仅照亮整个场所&#xff0c;还散发出温暖迷人的光芒&am…

Git 大量log查看:git log --pretty=oneline

git log 是 Git 版本控制系统中的一个命令&#xff0c;用于展示一个或多个分支的提交历史记录。 当你在 git log 命令后面添加 --prettyoneline 选项时&#xff0c;它会以单行的形式显示提交历史。这意味着每个提交将会在一行内显示&#xff0c;而不是默认的多行显示格式。 具…

浅谈WPF之Popup弹出层

在日常开发中&#xff0c;当点击某控件时&#xff0c;经常看到一些弹出框&#xff0c;停靠在某些页面元素的附近&#xff0c;但这些又不是真正的窗口&#xff0c;而是页面的一部分&#xff0c;那这种功能是如何实现的呢&#xff1f;今天就以一个简单的小例子&#xff0c;简述如…

Python Matplotlib 库使用基本指南

简介 Matplotlib 是一个广泛使用的 Python 数据可视化库&#xff0c;它可以创建各种类型的图表、图形和可视化效果。无论是简单的折线图还是复杂的热力图&#xff0c;Matplotlib 提供了丰富的功能来满足我们的数据可视化需求。本指南将详细介绍如何安装、基本绘图函数以及常见…