首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
算法笔记(c++)--完全背包问题
】的更多相关文章
算法笔记(c++)--完全背包问题
算法笔记(c++)--完全背包和多重背包问题 完全背包 完全背包不同于01背包-完全背包里面的东西数量无限 假设现在有5种物品重量为5,4,3,2,1 价值为1,2,3,4,5 背包容量为10 #include <iostream> #include<algorithm> using namespace std; int main() { ; ] = { ,,,,,}; ] = { ,,,,,}; ] = { }; ; i <= ; i++) ;j++) dp[j] =…
算法笔记(c++)--01背包问题
算法笔记(c++)--经典01背包问题 算法解释起来太抽象了.也不是很好理解,最好的办法就是一步步写出来. 背包问题的核心在于m[i][j]=max(m[i-1][j],m[i-1][j-w[i]]+v[i])这个公式理解起来还是有点麻烦的特别我这种脑子笨的人.所以我先上段代码,然后那数据一步步分析就行了. 先上代码:代码稍微看看就行了,关键我下面的解释,走一遍就懂了. #include <iostream> #include<algorithm> using namespace…
算法笔记(c++)--关于01背包的滚动数组
算法笔记(c++)--关于01背包的滚动数组 关于01背包问题:基本方法我这篇写过了. https://www.cnblogs.com/DJC-BLOG/p/9416799.html 但是这里数组是N^2,据说滚动数组可以用1维来代替二维. 我想了想也没想通.干脆老方法,一步步列出来就懂了. 先上下滚动数组的代码,然后分析代码: dp[N];//这里只用一维的 ; i<=n; i++)//对每个数判断,可反 { for(int j=m; j>=weight[i]; j--)/ dp[j]=ma…
算法笔记_041:寻找和为定值的多个数(Java)
目录 1 问题描述 2 解决方案 1 问题描述 输入两个整数n和sum,要求从数列1,2,3,...,n中随意取出几个数,使得它们的和等于sum,请将其中所有可能的组合列出来. 2 解决方案 上述问题是典型的背包问题的应用,即先找出n个数的所有组合,再在这些组合中寻找组合数相加之和等于sum的组合,并依次输出这些组合中的数. 具体代码如下: package com.liuzhen.array_2; public class ManySumN { /* * 函数功能:以字符串形式返回1~n个数的所…
学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴趣,就记录一下自己的学习总结! 排序:将一些无序的元素按照某种规则排列的过程就叫"排序".在生活中,有时候可能是一些少量的数据 ,,,但是 ,也有可能是 一些的大数据 .排序是非常基础和重要的算法,有着广泛的理论基础和实践需求.(加粗部分摘自<算法笔记>原话!:-D) 一个排序…
算法笔记--数位dp
算法笔记 这个博客写的不错:http://blog.csdn.net/wust_zzwh/article/details/52100392 数位dp的精髓是不同情况下sta变量的设置. 模板: ]; ll dp[][state];//不同题目状态不同 ll dfs(int pos,/*state变量*/,bool lead/*前导零*/,bool limit/*数位上界变量*/)//不是每个题都要判断前导零 { //递归边界,既然是按位枚举,最低位是0,那么pos==-1说明这个数我枚举完了 )…
算法笔记--lca倍增算法
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; ][N]; int deep[N]; int h[N]; void dfs(int o,int u,int w) { ,h[u]=h[o]+w; ;j<g[u].size();j++) { if(g[u][j]!=o) { anc[][g[u][j]]=u; ;i<;i++)anc[i][g[u][j]]=anc[i-][anc[i-][g[u][j]]]; dfs(u,g[u]…
算法笔记--STL中的各种遍历及查找(待增)
算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); while(it != m.end()) { //it->first; //it->second; it ++; } set: multiset<int>ss; multiset<int>::iterator it=ss.begin();//auto it,multiset元素可以…
算法笔记--priority_queue
算法笔记 priority_queue<int>que;//默认大顶堆 或者写作:priority_queue<int,vector<int>,less<int>>//less表示其他元素都比堆顶小 小顶堆:priority_queue<int,vector<int>,greater<int>>//greater表示其他元素都比堆顶大 less和greater容易混淆!!!…
算法笔记--sg函数详解及其模板
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/luomingjun12315/article/details/45555495 sg[i]定义,从i走一步能到达的j的sg[j]以外的最小值,那么从sg函数值为x的状态出发,我们能转移到sg值为0,1,...,x-1的状态 对于某个人来说,0是他的必败态,sg[0] = 0 我们从这个状态出发,用d…