CodeFoeces-189A

题目

原题链接:A. Cut Ribbon

题意

有一条长为n的丝带,只能剪成a,b或者c长度,问最多能剪多少段。开始以为模拟可解,最后参考别人的完全背包。

代码

#include
using namespace std;
int main() {
    int n,s[3],dp[4400];
    scanf("%d%d%d%d",&n,&s[0],&s[1],&s[2]);
    memset(dp,-1,sizeof(dp));
    dp[0]=0;
    for(int i=0; i<3; i++) {
        for(int j=s[i]; j<=n; j++) {
            if(dp[j-s[i]]!=-1)
                dp[j]=max(dp[j],dp[j-s[i]]+1);
        }
    }
    printf("%d\n",dp[n]);
    return 0;
}

你可能感兴趣的:(CodeFoeces-189A)