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

【蓝桥杯】2021 省赛 c++ A组真题砝码称重 你有一架天平和N个砝码,这N个砝码重量依次是W1,W2,……,WN请你计算一共可以称出多少种不同的重量? 注意砝码可以放在天平两边。 【样例输入】 3 1 4 6 【样例输出】 10 思路:动态规划题,将每个砝码分为三个状态,+w,0,-w,然后利用set容器的唯一性遍历每一个砝码的状态,set中初始状态只有0,然后与砝码1三个状态相加得到状态2,然后逐一遍历。 注意:为了简化程序,每次加入相加的值的绝对值即可。 代码如下: #include <stdio.h> #include. 阅读详情

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,10g砝码0-n10,20g砝码0-n20,

枚举判断条件:

统计所有砝码和的不同重量

砝码和总重小于1000

算法思路:

1、枚举不同砝码的个数,计算总重量,并将总重量对应的标志置为1

2、根据标志,计算总重量的个数

#include<iostream>
using namespace std;
int flag[1005] = { 0 };
int main()
{
	//1、枚举不同砝码的个数,计算总重量,并将总重量对应的标志置为1
	int n1, n2, n3, n5, n10, n20;
	cin >> n1 >> n2 >> n3 >> n5 >> n10 >> n20;
	for (int i1 = 0; i1 <= n1; i1++)
	{
		for (int i2 = 0; i2 <= n2; i2++)
		{
			for (int i3 = 0; i3 <= n3; i3++)
			{
				for (int i5 = 0; i5 <= n5; i5++)
				{
					for (int i10 = 0; i10 <= n10; i10++)
					{
						for (int i20 = 0; i20 <= n20; i20++)
						{
							int sum = i1 + i2 * 2 + i3 * 3 + i5 * 5 + i10 * 10 + i20 * 20;
							flag[sum] = 1;
						}
					}
				}
			}
		}
	}
	//2、根据标志,计算总重量的个数
	int count = 0;
	for (int i = 1; i <= 1000;i++)
	{
		if (flag[i])
		{
			count++;
		}
	}
	cout << count << endl;
    system("pause");
	return 0;
}

其实使用枚举法来计算这个题并不适用,随机选择数据,100*50*50*50*10*15=100+100+150+250+100+300<=1000,

次数为1875000000,十多亿次,这得跑到什么时候,所以也体现了枚举法的弊端,不适用大数据

C++动态规划求解砝码称重问题(双向的,包括减法情况) 1、定义 先来读一读题目,题目如下: **现有一组砝码,重量互不相等,分别为m1、m2……mn;他们可取的最大数量分别为x1、x2……xn。现在要用这些砝码去称物体的重量,问能称出多少种不同的重量。 看完这个题目感觉似乎无从下手,难道要一个个的枚举拼凑吗?答案是否定的。不绕弯子了,下面直接进入动态规划的主场。 设想第0种情况,假如现在只有0个砝码,问它能称出的重量有几种?是个人都知道只能称0的重量,并且只有这么1种情况。 设想第1种情况,现在只有1种规格的砝码,它的重量是1,数量是1个,问它能称出的重量 阅读详情

相关推荐

C++小作业-用友元函数计算Boat和Car类对象的总重量

一、问题描述 【问题描述】定义Boat与Car两个类,二者都有weight属性,定义二者的一个友元函数totalWeight(),计算二者的重量和。 【输入形式】卡车和轮船的重量 【输出形式】卡车和轮船的总重量 【样例输入】 卡车重量:25 轮船重量:36 【样例输出】 卡车和轮船的总重量为:61 二、代码实现 #include <iostream> using namespace std; //Car类的定义与实现 class Car; class Ca

编程小鹏的博客 1313

砝码称重(动态规划c++实现)

你有一架天平和 N 个砝码,这 N个砝码重量依次是 W1,W2,⋅⋅⋅,WN。第二行包含 N个整数:W1,W2,W3,⋅⋅⋅,WN。请你计算一共可以称出多少种不同的正整数重量?输入的第一行包含一个整数 N。注意砝码可以放在天平两边。输出一个整数代表答案。

zyang654321的博客 977

【Clickhouse从入门到精通】第60篇:ClickHouse生态总结与未来展望

ClickHouse系列收官总结 本文作为《ClickHouse从入门到精通》系列的第60篇收官之作,系统回顾了整个系列的知识体系。文章从基础概念到高级应用,全面梳理了ClickHouse的核心技术: 知识体系:完整回顾了60篇文章的知识图谱,包括列式存储原理、MergeTree引擎家族、分布式架构等核心内容 生态工具:详细盘点了ClickHouse的企业版工具、运维监控、数据集成和可视化方案 版本演进:分析了从21.x到24.x的主要版本特性升级 未来趋势:展望了向量化引擎、湖仓一体、AI集成等发展方向

xyghehehehe的专栏 442

C/C++百题打卡[9/100]——砝码称重[3种解法、蓝桥杯2021省赛]

关键字:蓝桥杯2021省赛、砝码称重[3种解法]、运行结果比较。

Wang_Dou_Dou_的博客 8795

手把手教你:在openEuler 22.03上离线搞定OpenSSH 9.8升级(CentOS 7.9通用)

本文详细介绍了在openEuler 22.03和CentOS 7.9系统上离线升级OpenSSH 9.8的完整流程,包括准备工作、离线包获取、安装步骤、服务管理及回滚方案。特别针对无外网环境的企业服务器,提供安全可靠的离线升级解决方案,帮助运维人员有效提升系统安全性。

weixin_30682415的博客 192

泛微表单添加自定义按钮

泛微表单添加自定义按钮

技术分享 2191

P2347 [NOIP1996 提高组] 砝码称重【DP】

设有1g2g3g5g10g20g的砝码各若干枚(其总重 $ \le 1000$),可以表示成多少种重量?

海岛Blog 1394

终于找到了!Ubuntu 虚拟机卡死的终极解决方案(如何解决VMware安装Ubuntu24.04桌面进不去、黑屏、虚拟机卡死、显示不全、屏幕闪烁等问题)

终于找到了!Ubuntu 虚拟机卡死的终极解决方案(如何解决VMware安装Ubuntu24.04桌面进不去、黑屏、虚拟机卡死、显示不全、屏幕闪烁等问题)

XiaoqiangClub的博客 1万+

P2347 砝码称重——By C++

题目描述 设有1g1g、2g2g、3g3g、5g5g、10g10g、20g20g的砝码各若干枚(其总重\le 1000≤1000), 输入输出格式 输入格式:   输入方式:a_1 , a_2 ,a_3 , a_4 , a_5 ,a_6a1​,a2​,a3​,a4​,a5​,a6​ (表示1g1g砝码有a_1a1​个,2g2g砝码有a_2a2​个,…,20g20g砝码有a_6a6​个)...

iv__vi的博客 3514

2、TrustZone(内含链接)——长期学习内容

ARM系列学习路径整理,希望对大家有用。

HoneyIC的博客 232

异常数据(outlier data)处理基于分位数法(箱图法、箱型法)替换及删除方案

异常数据(outlier data)处理基于分位数法(箱图法、箱型法)替换及删除方案 简单统计法: 这个原则有个条件:数据需要服从正态分布。 在3倍标准差原则下,异常值如超过3倍标准差,那么可以将其视为异常值。正负3的概率是99.7%,那么距离平均值3之外的值出现的概率为P(|x-u| > 3) <= 0.003,属于极个别的小概率事件。如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。 分位数法(箱图法、箱型法): 并不是说从高斯分布中抽出的所有数据都符..

data+scenario+science+insight 1795

打卡信奥刷题(696)用C++信奥P8742[普及组/提高] [蓝桥杯 2021 省 AB] 砝码称重

你有一架天平和N个砝码, 这N个砝码重量依次是W1​W2​⋯WN​。请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边。

Loge谈信奥--一个专注于信奥人的博客 4154

西门子博图v16安装密钥提示报错:CryptAcquireContext MS_DEF_PROV Error of containger opening...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 3302

YTU OJ 1310 砝码称重

1310: 砝码称重 时间限制:1 Sec内存限制:128 MB 提交:81解决:48 [提交][状态][讨论版][命题人:lyh] 题目描述 5个砝码 用天平称重时,我们希望用尽可能少的砝码组合称出尽可能多的重量。 如果只有5个砝码,重量分别是1,3,9,27,81。则它们可以组合称出1到121之间任意整数重量(砝码允许放在左右两个盘中)。 本题目要求编程实现:对用户...

xiaobubu2015的博客 789

C# 的 Dapper 库高级进阶:刨根问底的深度解析

通过今天的探索,我们了解了 Dapper 的一些高级功能,包括如何处理复杂的查询、执行批量操作以及如何优化性能。希望这篇深入浅出的文章能帮助你在实际项目中更好地运用 Dapper!🎈好了,小伙伴们,今天的分享就到这里啦!如果你有任何疑问或者想要分享自己的经验,请在评论区留言。我们下次再见!👋上述示例代码仅供参考,实际使用时请根据项目需求进行适当调整。✨Dapper 官方文档Dapper 性能优化指南Dapper 动态参数使用来同时执行多个查询。利用Execute和Query方法来简化 SQL 调用。

java专栏 813

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

打卡信奥刷题(290)用C++工具信奥P2347[普及组/提高] [NOIP1996 提高组] 砝码称重

设有1g2g3g5g10g20g的砝码各若干枚(其总重 $ \le 1000$),可以表示成多少种重量?

Loge谈信奥--一个专注于信奥人的博客 2226

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

砝码称重(dp)

砝码称重 内容: 砝码称重(30分) 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重 要求: 输入方式:a1 a2 a3 a4 a5 a6 (表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个) 输出方式:Total=N (N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况) 如输入:1_1_0_0_0_0 (注:下划线表示空格) 输出:TOTA

Roly 3330

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【中等】AcWing3417. ——砝码称重

acwing的中等题目,来看看?٩(๑>◡<๑)۶

yuyu130225的博客 688

蓝桥杯 ADV-192 盾神与砝码称重

算法提高 盾神与砝码称重 时间限制:1.0s 内存限制:256.0MB 问题描述   有一天,他在宿舍里无意中发现了一个天平!这个天平很奇怪,有n个完好的砝码,但是没有游码。盾神为他的发现兴奋不已!于是他准备去称一称自己的东西。他准备好了m种物品去称。神奇的是,盾神一早就知道这m种物品的重量,他现在是想看看这个天平能不能称出这些物品出来。但是盾神稍微想了1秒钟以后就觉...

g28_gerwulf的博客 593

2017笔试编程之砝码称重~

时间:2017/7/27 事件:参与了某公司的笔试,遇到一编程题,感觉挺有趣哒,选择记录下来,题目记不完全,但是努力回想~ 题目内容:有2个砝码,分别为1kg,2kg(各一个),则一共可以称重的情况有3种,即{1,1},{2,1},{3,1}【注:第一个元素为称重重量,第二个元素为组成方案】;    再举个例子,有3个砝码,分别为1kg,2kg,3kg(各一个),则一共可以称重的情况有6种,

cfy1024的博客 666

Bailian4141 砝码称重【DP】

4141:砝码称重 总时间限制: 1000ms 内存限制: 65536kB 描述 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重<=1000),要求:计算用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况。 输入 一行,包括六个正整数a1,a2,a3,a4,a5,a6,表示1g砝码有a1个,2g砝码有a2个,……,20g砝码有a6个。相邻两个整数之间用单个空格隔开。 输出 以“Total=N”的形式输出,其中N为可以称出的不同重量的个数。 样例输入 1 1 0 0 0 0

海岛Blog 729

P2347 砝码称重

题目描述 设有1g、2g、3g、5g、10g、20g的砝码各若干枚(其总重≤1000), 输入格式 输入方式:a1,a2,a3,a4,a5,a6(表示1g砝码有a1个,2g砝码有a2个,…,20g砝码有a6个) 输出格式 输出方式:Total=N (N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况) 输入输出样例 输入 #1 1 1 0 0 0 0 输出 #1 Total=3 #include<iostream> #include<cstdio> #inc

qq_43457125的博客 315

P1441 砝码称重

题目链接:P1441 砝码称重 题意 给定N个数,去掉M个数,统计由n-m个数最多能组成的元素个数。 分析 从N个里面找出N-M个砝码,相当于枚举每个砝码,判断选或者不选,时间复杂度2^n.可以用dfs搜索实现,也可以用二进制实现,枚举0-2^n - 1,判断每个数i的二进制是否有n-m个1,2^n-1有n个1,因此找到二进制1的个数为n-m的即为一种方案,1所在位置的下标即为选定的砝码的下标。...

qq_37866436的博客 289

洛谷P1441 砝码称重

题目描述 现有n个砝码,重量分别为a1,a2,a3,……,an,在去掉m个砝码后,问最多能称量出多少不同的重量(不包括0)。 输入输出格式 输入格式: 输入文件weight.in的第1行为有两个整数n和m,用空格分隔 第2行有n个正整数a1,a2,a3,……,an,表示每个砝码的重量。 输出格式: 输出文件weight.out仅包括1个整数,为最多能称量出...

weixin_30826761的博客 161

砝码称重 解题报告

砝码称重  NOIP1996TG 设有1g,2g,3g,5g,10g,20g的砝码各若干枚(其总重≤1000g),要求: 输入 a1 a2 a3 a4 a5 a6(表示1g砝码有a1个,2g砝码有a2个) 输出 Total=N (N表示用这些砝码能称出的不同重量的个数,但不包括一个砝码也不用的情况) simple input 1 1 0 0 0 0 simp

zyf2000 4010

砝码称重2

题目描述 Description 有n个砝码,现在要称一个质量为m的物体,请问最少需要挑出几个砝码来称? 注意一个砝码最多只能挑一次 输入描述 Input Description 第一行两个整数n和m,接下来n行每行一个整数表示每个砝码的重量。 输出描述 Output Description 输出选择的砝码的总数k,你的程序必须使得k尽量的小。 样例输入 Sample Input 3

happy 868
上一篇: 如何利用分治法解决最大子段和问题
下一篇: 散列表(哈希表)
Gigi Princess
博客等级 码龄5年 62粉丝 102原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值