1 条题解
-
1
#include <algorithm> #include <iostream> #include <cstdio> #include <cmath> using namespace std; const int MAXN=1001; int a[7],w[7]={0,1,2,3,5,10,20},f[MAXN]={};//a数组存放的是每种砝码的数量,w数组是每种砝码的重量,f[i]表示 “重量 i 成立” int main() { for (int i=1;i<=6;i++)//输入 { scanf("%d",&a[i]); } f[0]=1;//初始化! f [0] 就是不使用任何砝码的情况 for (int i=1;i<=6;i++)//枚举六种砝码 { for (int j=1;j<=a[i];j++)//枚举每个砝码 { for (int k=1000;k>=0;k--)//寻找 已成立的重量 { if (f[k])//若此重量成立 { f[k+w[i]]=1;//那么这个重量加上这个未使用的砝码的总重量也成立 } } } } int ans=0; for (int i=1;i<=1000;i++)//一遍扫,统计成立的重量。记住从1开始循环,因为不使用砝码的情况在这里不统计 { if (f[i]) ans++; } printf("Total=%d",ans);//输出 return 0;//华丽丽de结束! }
- 1
信息
- ID
- 1297
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 2
- 标签
- 递交数
- 12
- 已通过
- 5
- 上传者