Description
设有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重<=1000g),要求:可以称出多少种重量。
Input
输入方式:a1 a2 a3 a4 a5 a6
(表示1g砝码有a1个,2g砝码有a2个,......20g砝码有a6个)
Output
输出方式:Total=N
(N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况)
Sample Input
1 1 0 0 0 0
Sample Output
Total=3 (表示可以称出1g,2g,3g三种不同的重量)
KEY:这题我用的是穷举,把所有的方案都给搞出来,用数组标记,因为数据量不大,所以蛮过了……
Source:
#include < iostream >
using namespace std;
int m[] = ... {0,1,2,3,5,10,20} ;
int main()
... {
int n[7];
int p[7];
while(cin>>n[1]>>n[2]>>n[3]>>n[4]>>n[5]>>n[6])
...{
int f[1005]=...{0};
for(p[1]=0;p[1]<=n[1];p[1]++)
for(p[2]=0;p[2]<=n[2];p[2]++)
for(p[3]=0;p[3]<=n[3];p[3]++)
for(p[4]=0;p[4]<=n[4];p[4]++)
for(p[5]=0;p[5]<=n[5];p[5]++)
for(p[6]=0;p[6]<=n[6];p[6]++)
...{
int t=p[1]*m[1]+p[2]*m[2]+p[3]*m[3]+p[4]*m[4]+p[5]*m[5]+p[6]*m[6];
f[t]=1;
}
int count=0;
for(int i=1;i<=1000;i++)
if(f[i]) count++;
cout<<"Total="<<count<<endl;
}
return 0;
}
![]()