Run ID | 作者 | 问题 | 语言 | 测评结果 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|
23512 | BOSTEM ROBOT | 砝码称重 | C++ | 通过 | 0 MS | 260 KB | 621 | 2023-07-15 16:51:51 |
#include<bits/stdc++.h> using namespace std; int f[10000000]={}; int c[10000000]={}; int main() { int n=0; int num[10]={0,1,2,3,5,10,20};//先将砝码大小进行预处理 for (int i=1;i<=6;i++) { int k; cin>>k; for (int j=1;j<=k;j++) c[++n]=num[i]; }//转换01背包 f[0]=1; int sum=0,ans=0; for (int i=1;i<=n;i++) sum+=c[i];//求出01背包体积最大值 for (int i=1;i<=n;i++) for (int j=sum;j>=c[i];j--) f[j]+=f[j-c[i]];//DP for (int i=1;i<=sum;i++) if (f[i]) ans++;//累加所有可能出现的方案总和 cout<<"Total="<<ans; return 0; }