装满背包的递推公式

dp[j] += dp[j - nums[i]];

dp[j]的含义是指在背包容量为j的情况下,背包能装的最大重量
nums[i]就是第i个物品的重量

动态规划就是当前值依赖于前一个值,实现全局最优

备忘:
如果求组合数,外层遍历物品
如果求排列数,外层遍历背包
image.png

如果遍历整颗树,递归函数就不能有返回值
遍历某一条固定路线,递归函数就一定要有返回值

二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数
二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数

image.png
6.24算法题
image.png

完全背包问题
完全背包和01背包问题唯一不同的地方就是,每种物品有无限件

6.25
奇安算法题
image.png

6.26
牛客网--重构二叉树思路
image.png

6.28
image.png

image.png

image.png

image.png

image.png

image.png

c++三数之和
image.png
算法题小知识
如何对容器的值排序

sort(nums.begin(),nums.end()); 

使用set

unordered_set<int> set//定义set
set.find()//查找元素,返回bool值
set.insert()//插入元素
set.end()//set表的最后一个元素,一般使用方法是用来判断查找的数是不是和set.end()相等,若相等则set表中没有这个数

动态规划模板

vector<int> dp(n+1,0)
dp[i][j]=max(dp[i-1][j],dp[i][j-weight[i]+value[i]);

将vector的成员类型是string 加入到集合中

vector<string>& wordDict
unordered_set<string> wordSet(wordDict.begin(), wordDict.end());

自由自在像小鸟
4 声望1 粉丝

引用和评论

0 条评论