C++--ACM之杭电OJ--1248 寒冰王座

完全背包问题

#include<iostream>
using namespace std;
int f[10001];
int max(int a,int b)
{
    return a>b?a:b;
}
int main()
{
    int n,m;
    int w[3]={150,200,350};
    int v[3]={150,200,350};
    cin>>n;
    while(n--)
    {
        cin>>m;
        for(int i=0;i<3;i++)
        {
            for(int j=v[i];j<=m;j++)
            {
                f[j]=max(f[j],f[j-v[i]]+w[i]);             //找出容量最小,价值最大的!!
            } 
        }
        cout<<m-f[m]<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/William_Sunrise/article/details/81635348