刚看到这道题时,觉得很简单,但是就不知道该怎么办,因为没有价值和容量不知该怎么弄,后来看到别人的代码,恍然大悟,对这道题来说,价值就是体积啊。每件物品有无数件,就要从体积最小的开始算。
Description
Input
Output
Sample Input
2 380 200
Sample Output
30 0
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int t,N;
int max(int x,int y)
{
return x>y?x:y;
}
int main()
{
int i,j;
int w[3]={150,200,350};//刚才试验了一下,这两处不一定要按升降序,乱序一样的。
int c[3]={150,200,350};//
int f[10005];
scanf("%d",&t);
while(t--)
{
scanf("%d",&N);
memset(f,0,sizeof(f));
for(i=0;i<3;i++)
{
for(j=c[i];j<=N;j++)
f[j]=max(f[j],f[j-w[i]]+c[i]);
}
printf("%d\n",N-f[N]);
}
return 0;
}