题意:一块长度为n的布条,切成只含a,b,c三种长度的片段,求最多可以切多少块
思路:裸完全背包。三种物品,消耗长度体积,贡献为1.
#include<iostream>
#include<limits.h>
using namespace std;
int main()
{
int n;
int f[4001];
f[0]=0;
for(int j=1;j<=4000;j++)
f[j]=INT_MIN;
int a[4];
cin>>n>>a[1]>>a[2]>>a[3];
for(int i=1;i<=3;i++)
for(int j=a[i];j<=n;j++)
{
if(f[j]<f[j-a[i]]+1)f[j]=f[j-a[i]]+1;
}
cout<<f[n]<<endl;
}


被折叠的 条评论
为什么被折叠?



