Day38 | 动态规划 01背包应用 目标和&&一和零
代码随想录 | Day38 | 动态规划 :01背包应用 目标和&&一和零动态规划应该如何学习?-CSDN博客 01背包模板 | 学习总结-CSDN博客 难点: 代码都不难写,如何想到01背包并把具体问题抽象为01背包才是关键 494.目标和(恰好等于背包容量求方案数)494. 目标和 - 力扣(LeetCode) 思路分析:设前面要加“+”的数和为p,前面要加“-”的数的和为q。 p+q=sum(数组所有元素的和) p-q=target(要加正号的减去要加负号的) 2p=sum+target p=(sum+target)/2 也就是说呢,我们要在nums数组里面找一个子集,让子集的和等于p,能找到几个就有几种方案 1.回溯法本题也可以使用回溯暴力枚举,直接搜索nums里面的所有组合,等于target的就是答案。 这是组合总和的代码,当然是超时的 12345678910111213141516171819202122232425262728293031323334class Solution...
Day37 | 动态规划 01背包应用 分割等和子集 && 最后一块石头的重量II
代码随想录 | Day37 | 动态规划 :01背包应用 分割等和子集 && 最后一块石头的重量II动态规划应该如何学习?-CSDN博客 01背包模板 | 学习总结-CSDN博客 难点: 代码都不难写,如何想到01背包并把具体问题抽象为01背包才是关键 416.分割等和子集416. 分割等和子集 -...
Day36 | 动态规划 整数拆分&不同的二叉搜索树
代码随想录 | Day36 | 动态规划 :整数拆分&不同的二叉搜索树动态规划应该如何学习?-CSDN博客 动态规划学习: 1.思考回溯法(深度优先遍历)怎么写 注意要画树形结构图 2.转成记忆化搜索 看哪些地方是重复计算的,怎么用记忆化搜索给顶替掉这些重复计算 3.把记忆化搜索翻译成动态规划 基本就是1:1转换 343.整数拆分343. 整数拆分 - 力扣(LeetCode) 思路分析: 我们要把n分解,就把f(n)当做是分解后返回的乘积结果 那很明显,f(n)可以分为 1{i*f(n-i) | 1<i<n-1}...
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 清屏, 并在屏幕最上面开始一个...