题目描述
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其质量<=1000g),求出用他们能称出的质量的种类数(不包括质量为0的情况)。
输入
a1 a2 a3 a4 a5 a6(表示1g砝码有a1个,2g砝码有a2个,......20g砝码有a6个)
输出
Total=N (N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
样例输入 复制
1 1 0 0 0 0
样例输出 复制
Total=3(表示可以称出1g,2g,3g三种不同的重量)
参考代码:
#include<bits/stdc++.h>
using namespace std;
int a[7]={0,1,2,3,5,10,20},w[1001]={},sum,n[7]={};
int main()
{
cin>>n[1]>>n[2]>>n[3]>>n[4]>>n[5]>>n[6];
for(int i=1;i<=6;i++)
for(int j=1;j<=n[i];j++)
{
w[a[i]]++;
for(int k=1000;k>=1;k--)
{
if(k==a[i]&&w[i]>1)
w[k+a[i]]++;
if(w[k]!=0&&k!=a[i])
w[k+a[i]]++;
}
}
for(int i=1;i<=1000;i++)
sum+=(w[i]>0?1:0);
cout<<"Total="<<sum;
}
简单