您的位置:首页 > 其它

01背包问题

2016-06-10 14:12 239 查看
一维背包问题:采药

这是一个典型的背包问题,动态规划分分钟解决

hljs cpp">#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,t[10001],f[10001],w[10001],ans;
int main(){
cin>>n>>m;
for(i=1;i<=m;i++)
cin>>t[i]>>w[i];
for(i=1;i<=m;i++)
for(j=n;j>=t[i];j--)
if(f[j-t[i]]+w[i]>f[j])
f[j]=f[j-t[i]]+w[i];
cout<<f
;
return 0;
}


二维背包问题:榨取kkk

hljs markdown">#include<bits/stdc++.h>
using namespace std;
int n,m,i,j,w2[10001],f[501][501],w1[10001],ans,k,o;
int main(){
cin>>m>>n>>k;
for(i=1;i<=m;i++)
cin>>w1[i]>>w2[i];
for(i=1;i<=m;i++)
for(j=n;j>=w1[i];j--)
for(o=k;o>=w2[i];o--)
if(f[j-w1[i]][o-w2[i]]+1>f[j][o])
f[j][o]=f[j-w1[i]][o-w2[i]]+1;
cout<<f
[k];
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: