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砝

本文探讨了使用C++解决砝码称重问题的算法,通过枚举法分析如何计算不同重量的组合。针对1g到20g砝码,不超过1000g的总重,提出利用布尔数组判重的方法,揭示了在大数据情况下枚举法的局限性。
最低0.47元/天 解锁文章
802

被折叠的 条评论
为什么被折叠?



