多重背包求最优解问题。
代码如下:
<span style="font-size:18px;">#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int V;
long long sum[110000];
int w[50];
void Init()
{
memset(sum,0,sizeof(sum));
sum[0]=1;
}
void solve()
{
for(int i=1;i<=21;i++)
for(int j=w[i];j<=V;j++)
sum[j]+=sum[j-w[i]];
printf("%lld\n",sum[V]);
}
int main()
{
for(int i=1;i<=21;i++)
w[i]=i*i*i;
while(scanf("%d",&V)!=EOF)
{
Init();
solve();
}
return 0;
}</span>
本文深入探讨了多重背包问题的求解方法,通过给出具体代码实例,详细解释了多重背包问题的核心思想及实现步骤。
225

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



