题目描述
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重≤1000),
输入格式
输入方式:a1,a2,a3,a4,a5,a6(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个)
输出格式
输出方式:Total=N
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
输入输出样例
输入 #1
1 1 0 0 0 0
输出 #1
Total=3
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cstdio>
#include<math.h>
#include<climits>
#include <map>
using namespace std;
int n,m,t,ans = 0;
int a[] = {0,1,2,3,5,10,20};
int c[1010],b[7];
int main() {
c[0] = 1;
for(int i = 1;i <= 6; i++) {
cin >> b[i];
t+=a[i]*b[i];
}
for(int i = 1;i <= 6;i ++) {
for(int j = 1; j <= b[i]; j++) {
for(int k = t ; k >= 0; k--) {
if(c[k] == 1 ) {
c[k+a[i]] = 1;
}
}
}
}
for(int i = 1;i <= t; i++) {
if(c[i] ) {
ans++;
}
}
cout << "Total=" << ans << endl;
return 0;
}
271

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



