题目描述
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000g)。求出用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。
输入
只有一行,共有六个数,依次为1g、2g、3g、5g、10g、20g砝码的个数
输出
只有一行,为称出不同重量的个数
样例输入 Copy
1 1 0 0 0 0
样例输出 Copy
Total=3
这道题是一个动态规划的题,但我们可以稍稍偷个懒,把它转换成用枚举法求的问题。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int a1,a2,a3,a4,a5,a6,total=0,a[10086];
int main(){
cin>>a1>>a2>>a3>>a4>>a5>>a6;
for(int i1=0;i1<=a1;i1++){
for(int i2=0;i2<=a2;i2++){
for(int i3=0;i3<=a3;i3++){
for(int i4=0;i4<=a4;i4++){
for(int i5=0;i5<=a5;i5++){
for(int i6=0;i6<=a6;i6++){
a[i1*1+i2*2+i3*3+i4*5+i5*10+i6*20] = 1;
}
}
}
}
}
}
for(int i=1;i<=10086;i++){
if(a[i]==1) total+=a[i];
}
cout<<"Total="<<total;
return 0;
}