#include<cstdio> #include<iostream> #include<algorithm> #include<cstring> using namespace std; int a[]={150,200,350}; int dp[10010],n; int solve(int cost,int weight) { int v; for(v=cost;v<=n;v++) dp[v]=max(dp[v],dp[v-cost]+weight); } int main() { int T; scanf("%d",&T); while(T--) { scanf("%d",&n); memset(dp,0,sizeof(dp)); for(int i=0;i<3;i++) solve(a[i],a[i]); printf("%d\n",n-dp[n]); } return 0; } //完全背包转化为01背包。
原文:http://blog.csdn.net/u012841845/article/details/18399531