c++数据结构与算法系列之砝码称重

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值