Day35 | 动态规划 最小花费爬楼梯&&不同路径&&不同路径II
代码随想录 | Day35 | 动态规划 :最小花费爬楼梯&&不同路径&&不同路径II动态规划应该如何学习?-CSDN博客 动态规划学习: 1.思考回溯法(深度优先遍历)怎么写 注意要画树形结构图 2.转成记忆化搜索 看哪些地方是重复计算的,怎么用记忆化搜索给顶替掉这些重复计算 3.把记忆化搜索翻译成动态规划 基本就是1:1转换 746.使用最小花费爬楼梯746. 使用最小花费爬楼梯 - 力扣(LeetCode) 详解在这篇博客,这里不再赘述。 动态规划应该如何学习?-CSDN博客 62.不同路径62. 不同路径 - 力扣(LeetCode) 思路:和爬楼梯差不多,爬楼梯是从i-1和i-2往上走,这个是从左边和上边才能走到当前位置 到当前点(m,n)的路径数量为到(m-1,n)的数量加上(m,n-1)的路径数量 到(3,3)的路径数量就是到(2,3)路径和(3,2)路径数量的和然后就会一直递归到(1,2),(2,1)直接返回一条路径 1.回溯...
Day34 | 动态规划 斐波那契数列&&爬楼梯
代码随想录 | Day34 | 动态规划 :斐波那契数列&&爬楼梯主要学习内容: 动规五部曲 509.斐波那契数列509. 斐波那契数 - 力扣(LeetCode) 法1:dp思路:本题比较简单,因为初始化,数组含义,遍历顺序,递推公式全是确定的,直接看动规五部曲 1.确定dp数组以及下标的含义 就是题目中的F(n),即前两个数字的加和 2.确定递推公式 1dp[i]=dp[i-1]+dp[i-2]; 3.dp数组如何初始化 1dp[0]=0,dp[1]=1; 4.确定遍历顺序 求的是F(n),即dp[n],所以就是从0,1递推上来 5.举例推导dp数组 如果是3,F(3) = F(2) + F(1) = 1 + 1 = 2 如果是4,F(4) = F(3) + F(2) = 2 + 1 = 3 123456789101112class Solution {public: int fib(int n) { if(n<2) ...
Ubuntu 22.04安装Visual Studio Code(VS Code)
Ubuntu 22.04安装Visual Studio Code(VS Code)一、下载打开浏览器,访问VS Code的官方网址:https://code.visualstudio.com。 在首页的左侧有两个蓝色的按钮,点击左边的按钮,下载.deb格式的安装包,下载完成后得到如下文件。 二、安装下载完成后,可以通过图形界面或命令行的方式安装,以下两种方式任选一种即可。 通过图形界面安装1.右键点击安装包,在菜单中选择“使用其他程序打开” 2.在“选择应用程序”中选择“软件安装”然后点击“选择” 打开安装包的速度可能较慢,请耐心等待 3.在新打开的窗口中可以查看一些安装包的信息,这里直接点击“安装” 4.输入当前账户密码,然后点击“认证”开始安装 (用户认证) (正在安装) (安装完成) 5.安装完成后,点击Dock栏上的“显示应用程序”,在“启动器”中就能找到VS Code 的图标,点击即可运行 通过命令行安装1.打开终端,切换至放有安装包目录,执行以下命令开始安装 12sudo dpkg -i...
CMake 保姆级教程(上)
CMake 保姆级教程(上)CMake 保姆级教程【C/C++】_哔哩哔哩_bilibili 1. CMake概述CMake 是一个项目构建工具,并且是跨平台的。关于项目构建我们所熟知的还有Makefile(通过 make 命令进行项目的构建),大多是IDE软件都集成了make,比如:VS 的 nmake、linux 下的 GNU make、Qt 的 qmake等,如果自己动手写 makefile,会发现,makefile 通常依赖于当前的编译平台,而且编写 makefile 的工作量比较大,解决依赖关系时也容易出错。 而 CMake 恰好能解决上述问题, 其允许开发者指定整个工程的编译流程,在根据编译平台,自动生成本地化的Makefile和工程文件,最后用户只需make编译即可,所以可以把CMake看成一款自动生成...
CMake 保姆级教程(下)
CMake 保姆级教程(下)CMake 保姆级教程【C/C++】_哔哩哔哩_bilibili 1. 嵌套的CMake如果项目很大,或者项目中有很多的源码目录,在通过CMake管理项目的时候如果只使用一个CMakeLists.txt,那么这个文件相对会比较复杂,有一种化繁为简的方式就是给每个源码目录都添加一个CMakeLists.txt文件(头文件目录不需要),这样每个文件都不会太复杂,而且更灵活,更容易维护。 先来看一下下面的这个的目录结构: 1234567891011121314151617181920212223242526shell$ tree.├── build├── calc│ ├── add.cpp│ ├── CMakeLists.txt│ ├── div.cpp│ ├── mult.cpp│ └── sub.cpp├── CMakeLists.txt├── include│ ├── calc.h│ └── sort.h├── sort│ ├── CMakeLists.txt│ ├── insert.cpp│ └──...
Day33 | 回溯算法 棋盘问题
代码随想录 | Day33 | 回溯算法:棋盘问题主要学习内容: 1.棋盘问题就和组合问题差不多 2.多维的回溯就和一维的思路想法差不多,只是遍历方式不同 51.N皇后51. N 皇后 - 力扣(LeetCode) 解法思路:遍历思路 如下图所示,我们在树的每一层按照列遍历,因为在上一层的列(比如第4列)放过的,在这一层的前面的列还是有可能放皇后(4之前的第1,2,列),所以我们应该在每一层都从0开始遍历 通过传入的参数i控制该第几行了 合法性判断 如果同一行同一列同一斜线放过的话就不能放了,因为我们通过i控制行,树的每层本身也就只会放一个,所以同一行不用查,只用查同一列和斜线。 1.函数参数和返回值 12vector<vector<string>> res;void backtracking(vector<string> path,int i,int...
linux super键是什么 linux终端的快捷命令汇总
linux super键是什么_linux终端的快捷命令汇总 今天来一篇介绍文哈,关于Linux终端的快捷键的介绍。也是有起因的,最近在移植yocto在服务器,这个时候遇到很多终端命令,因为对于终端快捷键的不熟悉所以有些操作很蹩脚,浪费了很多时间,所以我就整理一份终端命令的快捷键,用完之后觉得真香。所以大家赶紧收藏起来吧。 一:设置快捷键快捷键设置可以打开shell终端“Edit”菜单下的“Keyboard Shortcuts”进行,这里有一些默认的快捷键,当然也可以自定义快捷键,不过默认快捷键已成为一种操作习惯,比较通用,这里主要介绍默认的快捷键。 小提示:与Windows或者Linux下的文件系统相比,shell终端的快捷键一般要和Shift键组合起来使用,比如说复制、粘贴快捷键。 二:普通移动编辑快捷键 ctrl+f 向前移动一个字符 ctrl+b 向后移动一个字符 ctrl+a 移 动 到 当 前 行 首 home 或 者 shift+home ctrl+e 移动到当前行尾end ctrl+l 清屏, 并在屏幕最上面开始一个...
Linux 解决缓存锁问题:无法获得锁 /var/lib/dpkg/lock-frontend
【Linux】解决缓存锁问题:无法获得锁 /var/lib/dpkg/lock-frontend 今天在运行apt-get update更新软件包后,突然发现安装新的软件出现了这个报错:正在等待缓存锁:无法获得锁 /var/lib/dpkg/lock-frontend。锁正由进程 1855(unattended-upgr)持有。如图。 这个错误通常是由于其他进程正在使用APT包管理器而导致的。在你的情况下,进程1855(unattended-upgr)正在持有APT的锁。这是因为系统正在进行软件更新或升级。在进行这些操作时,APT会锁定相关文件以防止多个进程同时修改它们,以确保系统的稳定性和一致性。 所以一共有以下几种方法: 1.等待一会即可:让进程1855完成其任务并释放APT锁。然后再次尝试安装,就在我写完这篇博客时,我再次安装发现已经没有问题了… 2.杀死进程1855:sudo kill...
vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么区别
vscode在windows和linux如何使用cmake构建项目并make生成可执行文件,两者有什么区别windows1.按下crtl+shift+p打开vscode命令行选择Cmake configure,然后会让你选工具包,即出现第二张图 如果没有出现 1.再次按下ctrl+shift+p输入cmake select a kit 2.选择cmake select a kit(图1第三个) 3.选择咱们自己的编译器 笔者的是GCC9.2.0就选第三个了 4.再次按下cmake configure 一般这会就自动执行了cmakelists.txt文件 然后生成了buil文件夹 2.进入build文件夹新建一个终端,在终端中输入 1cd build 3.执行make,生成可执行文件1mingw32-make.exe 笔者用的是mingw的编译套件 如果大家这一步执行不成功很有可能是系统环境变量没有配置好,大家可以去设置里面配置一下mingw的bin目录,把它配置到path中 linux1.cmake .直接输入cmake...
Day32 | 回溯算法:排列问题
代码随想录 | Day32 | 回溯算法:排列问题主要学习内容: 1.复习树枝去重 2.复习树层去重 46.全排列46. 全排列 - 力扣(LeetCode) 解法思路:首先通过前面的学习,我们知道,每层递归函数的for循环是用来形成树形结构这一层的所有结点(比如main里面的递归函数的for循环形成了树形结构的第二层,剩下的结点都是递归得来的) 这道题的全排列,和组合问题最大的区别就是 1.[1,2,3]和[1,3,2]不是一个东西 2.因为[2,1,3]这种结果的存在,使得选了2以后要继续选1,说明每层递归函数的for循环的i都要从0开始而不是index,并且由于选了2了不能重复选择,在下面的函数里面碰到了2要跳过 由此可见,我们还需要一个used来记录我们已经选过的值(这就是树枝去重) 1.函数参数和返回值 12vector<vector<int>> res;void backtracking(vector<int>& nums,vector<int> path,vector<bool>...













