随笔分类 -  算法

摘要:vector<int> weight = {1, 3, 4}; vector<int> value = {15, 20, 30}; int bagWeight = 4; // 01背包 如果先遍历背包 后遍历物品 那就是每个包只会装一个物品 for(int j = bagWeight; j >= 0 阅读全文
posted @ 2022-12-26 21:50 种树人 阅读(79) 评论(0) 推荐(0) 编辑
摘要:总结自 endl妹子 图的割点与割边(超详细!!!) endl妹子 友链 题解 P3388 【【模板】割点(割顶)】 在一个无向图中,如果删除某个顶点,这个图就不再连通(任意两点之间无法相互到达),那么这个顶点就是这个图的割点。 割边(也称桥),即在一个无向图中删除某条边后,图不再连通。 若一个无向 阅读全文
posted @ 2020-08-12 20:50 种树人 阅读(125) 评论(0) 推荐(0) 编辑
摘要:题目 有N种物品和一个容量为V的背包。第i种物品最多有n[i]件可用,每件费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大 转化为01背包问题 另一种好想好写的基本方法是转化为01背包求解:把第i种物品换成n[i]件01背包中的物品,则得到了 阅读全文
posted @ 2020-08-08 11:04 种树人 阅读(223) 评论(0) 推荐(0) 编辑
摘要:来自某人博客,失效了去github看 github 看不懂 Floyd算法又称为插点法,是一种利用动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra算法类似。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名。从图的带权邻接矩阵A 阅读全文
posted @ 2020-03-30 14:53 种树人 阅读(654) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/anlian523/article/details/80955066 阅读全文
posted @ 2020-03-30 14:37 种树人 阅读(172) 评论(0) 推荐(0) 编辑
摘要:https://www.kancloud.cn/kancloud/pack/70125 题目 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。 基本思路 这是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。 用子问题定 阅读全文
posted @ 2020-03-26 17:41 种树人 阅读(247) 评论(0) 推荐(0) 编辑
摘要:完全背包 完全背包不同于01背包-完全背包里面的东西数量无限 假设现在有5种物品重量为5,4,3,2,1 价值为1,2,3,4,5 背包容量为10 1 #include <iostream> 2 #include<algorithm> 3 4 using namespace std; 5 int m 阅读全文
posted @ 2020-03-26 10:28 种树人 阅读(224) 评论(0) 推荐(0) 编辑
摘要:前提摘要见上一篇 01背包问题时间和空间复杂度都是O(nV), 空间复杂度可以继续优化为O(V) 算法笔记P444 滚动数组代码 1 dp[N];//这里只用一维的 2 for(int i=1; i<=n; i++)//对每个数判断,可反 3 { 4 for(int j=m; j>=weight[i 阅读全文
posted @ 2020-03-25 18:13 种树人 阅读(476) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/DJC-BLOG/p/9416799.html 算法解释起来太抽象了。也不是很好理解,最好的办法就是一步步写出来。 背包问题的核心在于m[i][j]=max(m[i-1][j],m[i-1][j-w[i]]+v[i])这个公式理解起来还是有点麻烦的特别 阅读全文
posted @ 2020-03-25 16:51 种树人 阅读(200) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示