01背包模板
01背包模板01背包是动态规划应该如何学习?-CSDN博客中的选或不选情况完全背包模板总结-CSDN博客 选或不选灵神视频 0-1背包 完全背包_哔哩哔哩_bilibili 01背包(模板,可以配合该视频和代码随想录博客一起看) 恰好装这个容量,求方案数量的最大最小价值和,那就是把选最大值的操作换成加号 494. 目标和 - 力扣(LeetCode)后续如果遇到其他两种变形笔者同步更新到这里 第一步:回溯法(深度优先遍历)思路: 配合视频一起看更棒 0-1背包...
完全背包模板
完全背包模板选或不选0-1背包 完全背包_哔哩哔哩_bilibili 动态规划应该如何学习?-CSDN博客 01背包模板 |...
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│ └──...














