
算法
文章平均质量分 84
Mr.bei
这个作者很懒,什么都没留下…
展开
-
【动态规划】背包问题
背包问题 给定一组物品,每种物品都有自己的重量的价值,在限定的重量内,我们如何选择,才能使总价值最高。 三种背包 1、01背包:每个物品只能选一次 2、完全背包:每个物品选择次数不限制 3、多重背包:每个物品只能选择限定次数 一、 01背包 核心思想: 在每次选择中只需要考虑拿还是不拿,比较两种情况的收益。 v [ i ] 为第 i 个物品的重量, w [ i ] 为第 i 个物品的价值; 拿第 i 个物品,背包容量有 j 时: dp [ i ] [ j ] = dp [ i - 1 ] [ j - v [原创 2021-05-05 13:42:43 · 388 阅读 · 0 评论 -
C++ STL 常用函数
C++ STL 常用函数 vector 数组 vector 可以被看成一个“超级数组” ,不会和C语言数组一样被限制长度,它既可以和C语言的数组一样用下标访问,也可以像链表一样动态改变长度。 #include<vector> //头文件 vector<int> arr1(100); int arr2[100]; //该定义类似C语言数组 vector<int> list; list.push_back(1); list.push_back(2); ....原创 2021-04-05 11:07:08 · 2803 阅读 · 8 评论 -
从枚举到动态规划
动态规划特点 1、重叠子问题 2、状态转移方程(最关键) 3、最优子结构 题型:求最值 核心:穷举 解题套路 1、明确【状态】 2、明确【选择】 3、明确 dp函数/数组的定义 4、明确 base case 动态规划解法代码框架 //初始化 base case dp[0][]0][...] = base //进行状态转移 for 状态1 to 状态1的所有取值 for 状态2 to 状态2的所有取值 for ... dp[状态1][状态原创 2021-04-02 19:15:03 · 427 阅读 · 5 评论