知识点:完全背包
背包总体上有两种使用方法:
1、当物品的价值和体积不等时,用dp[ ]表示价值。
2、当物品的价值和体积相等时,用dp[ ]表示状态。例如本题中,dp[i]==0表示无法达到价值i;dp[i]==1表示可以达到价值i。其它的背包也有这种性质。
#include <cstdio>
#include <memory.h>
bool dp[10001];
int V;
void ComplatePack(int val)
{
for(int i=val;i<=V;i++)
if(dp[i-val]) dp[i]=1;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&V);
memset(dp,0,sizeof(dp));
dp[0]=1;
ComplatePack(150);
ComplatePack(200);
ComplatePack(350);
int i;
for(i=V;i>=0&&!dp[i];i--);
printf("%d\n",V-i);
}
return 0;
}