CODEFORCES 189A(完全背包完全装满)

首先要对dp[]数组进行初始化 ,标记为一个特殊值 ,

接着DP过程中如果此值没有发生变化 则很明显这种情况是不存在,因此不做任何处理


可以对比一下HDU 1114

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int INF = -1e9;
int dp[4400];
int a[3];
int main()
{
    int n;
    while(cin>>n)
    {
        cin>>a[0]>>a[1]>>a[2];
        for(int i=0;i<4400;i++)
            dp[i]=INF;
        dp[0]=0;
        for(int i=0;i<3;i++)
            for(int v=a[i];v<=n;v++)
               if(dp[v-a[i]]!=INF)
                dp[v]=max(dp[v],dp[v-a[i]]+1);
        cout<<dp[n]<<endl;
    }
    return 0;
}


你可能感兴趣的:(CODEFORCES 189A(完全背包完全装满))