首页 > 代码库 > nyoj开心的小明
nyoj开心的小明
这个问题是01背包,而对于编程之美那道是完全背包问题,在编程之美中也有一个0,1背包问题。
而且是容量是小于等于,不是等于,对于是否等于,在初始化参数时候不一样,不小于全部初始化为0,恰好等于,初始化为无穷大,除了0.问什么呢?看算法入门竞赛那本,
背包问题其实不是很好理解,但是代码最终形式很简单,我要学会将问题抽象出来e利用此方法求解
#include<iostream> #include<memory.h> using namespace std; const int N=30000; int dp[N]; int main() { int len; cin>>len; while(len--) { memset(dp,0,sizeof(dp)); int V; cin>>V; int n; cin>>n; while(n--) { int size; int value; cin>>size; cin>>value; for(int j=V;j>=size;j--) { dp[j]=max(dp[j],dp[j-size]+value*size); } } cout<<dp[V]<<endl; } system("pause"); }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。