问题标题: 酷町堂:请问我的背包是干什么的?

0
0

0
1
刘凯南
刘凯南
高级守护
高级守护

根据某人回答,这是老师未开发好的一个功能

1
0
杨子逸
杨子逸
新手天翼
新手天翼

不知道,应该是例如前3名有类似与道具存放的地方吧

0
0
尹宗鑫
尹宗鑫
新手守护
新手守护

c++里的背包分为01背包,完全背包,多重背包,满箱背包

01背包:

#include<iostream>
using namespace std;
void read()
{
    int n,c,v[10001],w[10001],f[10001],i,j;
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>v[i];
    for(i=1;i<=n;i++)
    cin>>w[i];
    cin>>c;
    for(i=1;i<=n;i++)
    for(j=c;j>=w[i];j--)
    f[j]=max(f[j],f[j-w[i]]+v[i]);
    cout<<f[c];
}
int main()
{
read();
return 0;
}

多重背包:

#include<iostream>
using namespace std;
void read()
{
    int x[10001],f[10001],v[10001],w[10001],n,i,j,k,c;
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>v[i];
    for(i=1;i<=n;i++)
    cin>>w[i];
    for(i=1;i<=n;i++)
    cin>>x[i];
    cin>>c;
    for(i=1;i<=n;i++)
    for(j=c;j>=w[i];j--)
    for(k=0;k<=x[i];k++)
    if(j>=k*w[i])
    f[j]=max(f[j],f[j-k*w[i]]+k*v[i]);
    cout<<f[c];
}
int main()
{
read();
return 0;
}

满箱问题:

#include<iostream>
using namespace std;
int n,w[1001],c;
bool ya[1001];
void read()
{
    int i,j,k;
 cin>>n;
    for(i=1;i<=n;i++)
    cin>>w[i];
    cin>>c;
    ya[0]=1;
    for(i=1;i<=n;i++)
    for(j=c;j>=w[i];j--)
    ya[j]=ya[j]||ya[j-w[i]];
    for(k=c;k>=w[i];k--)
    if(ya[k]==1)
    {
    cout<<c-k<<endl;
    return ;
    }
}
int main()
{
read();
return 0;
}

 

完全背包:

#include<iostream>
using namespace std;
int n,c,w[10001],v[10001],ya[10001],i,j,k;
void read()
{
    cin>>n;
    for(i=1;i<=n;i++)
    cin>>w[i];
    for(i=1;i<=n;i++)
    cin>>v[i];
    cin>>c;
    for(i=1;i<=n;i++)
    for(j=w[i];j<=c;j++)
    ya[j]=max(ya[j],ya[j-w[i]]+v[i]);
    cout<<ya[c]<<endl;
}
int main()
{
read();
return 0;
}
 

 

0
0
邵逸儒
邵逸儒
中级天翼
中级天翼

@酷町喵~o( =∩ω∩= )o~ 

0
芮奥运
芮奥运
高级光能
高级光能

找酷町喵~o( =∩ω∩= )o~ 

0
0
0
0
我要回答