题意:最多能买多少东西。完全背包。

连接:http://acm.hdu.edu.cn/search.php?action=listproblem

View Code
#include <iostream>
using namespace std;
const int MAX=10000+10;
int w[5];
int dp[MAX];
int cmp(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int n,m;
    w[1]=150,w[2]=200,w[3]=350;
    while(~scanf("%d",&m))
    {
        while(m--)
        {
            scanf("%d",&n);
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=3;i++)
            {
                for(int j=w[i];j<=n;j++)
                {
                    dp[j]=cmp(dp[j],dp[j-w[i]]+w[i]);//找最大能买多好物品
                }
            }
            printf("%d\n",n-dp[n]);
        }
    }
    return 0;
}