多重背包求最优解问题。
代码如下:
<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>
时间: 2024-11-05 21:49:36