您的位置:首页 > 其它

完全背包问题

2015-03-06 16:37 211 查看
[align=center][/align]

#include<iostream>

#include<string>

using namespace std;

#define min(a,b) a<b?a:b
int w[501],p[501];

int f[100001];

int main()

{

int t,i,j,n,a,b,MAX;

freopen("D:\\input.txt","r",stdin);

cin>>t;

while(t--)

{

cin>>a>>b;

MAX=b-a;

cin>>n;

for(i=0;i<n;i++)

{

cin>>p[i]>>w[i];

}

for(i=0;i<=100000;i++)

{

f[i]=1000000;

}

f[0]=0;

for(i=0;i<n;i++)

{

for(j=w[i];j<=MAX;j++)

{

f[j]=min(f[j],f[j-w[i]]+p[i]);

}

}

if(f[MAX]<1000000)

{

cout<<"The minimum amount of money in the piggy-bank is "<<f[MAX]<<'.'<<endl;

}

else

cout<<"This is impossible."<<endl;

}

return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: