题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1248
解题报告:一遍ac,不能总是这样子刷水题,在这样下去,自己迟早瘫掉!
由于只有一张纸币,每件物品有好多,完全背包问题。。。
code:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int w[4]={0,150,200,300},dp[10005];
int main()
{
int T,money;
scanf("%d",&T);
while(T--)
{
memset(dp,0,sizeof(dp));
scanf("%d",&money);
for(int i=1;i<=3;i++)
for(int j=1;j<=money;j++)
if(j>=w[i])
dp[j]=max(dp[j-w[i]]+w[i],dp[j]);
printf("%d\n",money-dp[money]);
}
return 0;
}