E - Cut Ribbon

题目:

 

思路:

有n长度的绳子,要用长度为a,b,c长度的小绳子拼

直接暴力枚举,在运用dp进行优化

代码实现:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[100000];
int main()
{
int a,b,c,n,i;
cin>>n>>a>>b>>c;
memset(dp,0,sizeof(dp));//先把数组全置为0
dp[a]=dp[b]=dp[c]=1;//长度大小为1
for(i=1;i<=n;i++)//循环所有长度
{
if(dp[i])//判断该长度是否有一段小的绳子
{
dp[i+a]=max(dp[i+a],dp[i]+1);
dp[i+b]=max(dp[i+b],dp[i]+1);
dp[i+c]=max(dp[i+c],dp[i]+1);
}
}
cout<<dp[n]<<endl;
return 0;
}

 

posted @ 2021-07-19 17:06  wateriness  阅读(41)  评论(0)    收藏  举报