题目描述
查看题目信息
在现代质量计量中,砝码是质量量值传递的标准量具。
假设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重≤1000)。
你的任务是:根据给定的砝码(可能有多种不同的砝码,且同一种砝码可能有多个),计算可以称出的不同重量的个数。
输入格式
只有一行,为6个用空格隔开的正整数,分别表示6种砝码各自的数量。
输出格式
输出方式:Total=N
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
样例输入
1 1 0 0 0 0
样例输出
Total=3
问题提示
可以称出的重量:1g、2g、1g+2g=3g,共三种。
#include<bits/stdc++.h>
using namespace std;
int w[7]={0,1,2,3,5,10,20};
int s[7];
int f[1001];
int main(){
int i,j,k;
for(i=1;i<=6;i++){
cin>>s[i];
}
f[0]=1;
for(i=1;i<=6;i++){
for(k=1;k<=s[i];k++){
for(j=1001;j>=w[i];j--){
if(f[j-w[i]]){
f[j]=1;
}
}
}
}
int ans=0;
for(i=1;i<=1000;i++){
ans+=f[i];
}
cout<<"Total"<<"="<<ans;
return 0;
}