2、砝码称重
问题描述:
设有1g、2g、3g、5g、10g、20g的砝码各若干枚(共总重<=1000)
求用这些砝码能乘除不同的重量个数
【输入文件】
1g、2g、3g、5g、10g、20g的砝码个数
【输出文件】
能称出不同的重量的个数
【输入样例】
1 1 0 0 0 0
【输出样例】
3
分析:根据输入的砝码信息,每种砝码可用的最大个数是确定的,而且每种砝码的个数是连续的,能取0到最大个数,所以,符合枚举法的两个条件,可以使用枚举法。
枚举时,重量可以由1g,2g,……,20g的砝码中的任何一共,或者多个构成,
枚举对象可以确定为6种重量的砝码,范围为每种砝码的个数,判定时,只需判断这次得到的重量是新得到的,还是前一次已经得到的,即判重。
由于总重小于等于1000,所以可以开一个flag[1...1000]的布尔数组来判重,当得到v重量时,把flag[v]置为true,下次再得到v时,还是置为true,
最后只需要遍历一下flag数组,即可得到重量的个数。
枚举变量:1g砝码,2g砝码,3g砝码,1g砝码,10g砝码,20g砝码
枚举范围:1g砝码0-n1,2g砝码0-n2,3g砝码0-n3,5g砝码0-n5