C++019-C++暴力枚举
创始人
2025-05-30 05:39:25

文章目录

  • C++019-C++暴力枚举
    • 枚举
      • 枚举优缺点
      • 多重枚举
      • 枚举举例
      • 题目描述 百钱买百鸡
        • 解决方法1:
        • 修正浮点数的方法
        • 算法优化
        • 添加计算时间
        • 一重循环优化
      • 总结
      • 作业
    • 在线练习:
    • 总结

C++019-C++暴力枚举

在这里插入图片描述

在线练习:
http://noi.openjudge.cn/
https://www.luogu.com.cn/

枚举

枚举就是列出一个范围内的所有成员的程序,或者说是将所有情况都举出,并判断其是否符合题目条件,生活中常见的枚举有星期里面有星期一、星期二…星期日。在前面我们已经接触过简单的枚举,了解过枚举的概念。
关于简单枚举,其概念我们已经抓住要点:

定范围
列成员
选类型
算答案

枚举优缺点

优点:

1.能举出所有情况,保证解为正确解。
⒉.能解决许多用其他算法难以解决的问题。
3.便于思考与编程。

缺点:

枚举–暴力枚举理论上这种方式能求解一切问题,然而暴力枚举仅适用于一些规模较小的问题,对于规模巨大的情形,时间复杂度会过高

在这里插入图片描述

多重枚举

有时候,我们需要求解的变量不止一个,这时候,将涉及到多重变量的枚举,枚举一切可能情形的组合,再从中筛选出合法的解。
枚举两个变量x和y:

#include 
using namespace std;
int main()
{for(int x=left;x<=right;x++){for(int y=left1;y<=right1;y++){//删选x和y的取值组合}}return 0;
}

复杂度很高

枚举举例

题目描述 百钱买百鸡

题目描述
一只公鸡值5元,一只母鸡值3元,而1元可买3只小鸡。现有100元钱,想买100只鸡。问可买公鸡、母鸡、小鸡各几只?
解题思路
用枚举思想来验证:

在数学中解决这个问题,设公鸡x只,母鸡y只,小鸡z只,则:
x+y+z=100
5x+3y+z/3=100
同时满足上述两个条件的x、y、z值就是所求。
为了解决以上的问题,我们可以通过三重循环将所有情况都列一遍,然后通过if判断是不是满足条件,如果满足条件,便输出。
公鸡数量x的取值范围是0-100/5,
母鸡数量y的取值范围是0-100/3,
小鸡数量z的取值范围是0-3*100。

解决方法1:

#include 
using namespace std;
int main()
{int x,y,z;for(x=0;x<=100/5;x++)for(y=0;y<=100/3;y++)for(z=0;z<=3*100;z++){if(5*x+3*y+z/3==100 && x+y+z==100){cout<

输出为:
在这里插入图片描述

修正浮点数的方法

#include 
using namespace std;
int main()
{int x,y,z;for(x=0;x<=100/5;x++)for(y=0;y<=100/3;y++)for(z=0;z<=3*100;z++){
//        if(5*x+3*y+z/3==100 && x+y+z==100)if(5*x+3*y+z/3.0==100 && x+y+z==100) //修正浮点数{cout<

在这里插入图片描述

算法优化

#include 
using namespace std;
int main()
{int x,y,z;for(x=0;x<=100/5;x++)for(y=0;y<=100/3;y++){z=100-x-y; //减少一层循环if(5*x+3*y+z/3.0==100 && x+y+z==100) //修正浮点数{cout<

添加计算时间

//#include 
#include
#include
#include 
using namespace std;clock_t start,stop;
double duration;
int main()
{start = clock();int money=10000;int x,y,z;for(x=0;x<=money/5;x++)for(y=0;y<=money/3;y++)
//    for(z=0;z<=money*3;z++){z=money-x-y; //减少一层循环if(5*x+3*y+z/3.0==money && x+y+z==money) //修正浮点数{cout<

一重循环优化

最终优化(一重循环)
在尝到直接削去一重循环带来的甜头后,不知足的我们又开始想,是否可以再削去一重循环,只用一重循环来解决呢?我们反观上面的二重循环,发现我们并没有使用z这个变量了,那么我们在只使用一重循环的时候,是否也应该只使用一个变量呢?我们想到,x,y,z之间并不是毫无联系的,我们假设万钱刚好买到万鸡,据此我们列出两个方程组:

5*x+3*y+z/3=10000
x+y+z=10000

我们进行数学消元,只保留x,得到

y=2500-7*x/4
z=7500+3*x/4,

这是我们假设条件成立得到的关系式,下面我们只需令x取不同的值,同时对y和z进行检查,若x,y,z均满足我们预设的条件,那么这组解就是有效的。对于y,我们要令其为非负数,所以x不能大于1428;对于z,我们要令其为3的倍数。此外,我们得到的y和z两个关于x的关系式是由假设上述两个方程组成立得到的,所以我们的解还需要满足上述两个关系式。据此,我们得到以下的代码:

#include
#include
#include 
using namespace std;clock_t start,stop;
double duration;
int main()
{start = clock();int money=10000;int x,y,z;for(x=0; x<1429; x++){y = 2500-7*x/4;z = 7500+3*x/4;if((x+y+z==money)&&(5*x+3*y+z/3==money)&&(z%3==0)){cout<

总结

作业

在线练习:

http://noi.openjudge.cn/

总结

本系列为C++学习系列,会介绍C++基础语法,基础算法与数据结构的相关内容。本文为C++循环结构的中的暴力枚举案例,包括相关案例练习。

相关内容

热门资讯

中信建投2025下半年社服商贸... 智通财经获悉,中信建投证券发布研报称,新消费异军突起的路径各不相同,整体上是供给能够快速响应消费者细...
曾用印度工程师冒充AI,估值1... 曾经,有一位印度工程师,利用虚假手段试图营造出 AI 的假象,以此在市场上获取巨额估值。他或许凭借一...
本轮“即时零售战争”有何不同?... 此时此刻,即使已身处“618”,但目之所及,大众流量仍聚焦于外卖平台的价格战——关心哪个平台的羊毛更...
今日复牌,“国产算力航母”启航... 固态电池装车渐行渐近。6月9日晚间,一批A股宣布复牌,包括市场密集关注的两大科技股中科曙光、海光信息...
员工被通知前1小时还在改bug... 本报(chinatimes.net.cn)记者李明会 北京报道近日,花旗集团宣布推进全球简化工作,作...
沪银期价创历史新高 总沉淀资金... 本报记者 王 宁 6月份以来,受国际白银价格走势强劲影响,国内沪银期价持续走高,截至目前主力7月合约...
高考成绩和主权货币 高考成绩和... 本文来自微信公众号:一知半论,作者:格拉古艾尔,题图来源:视觉中国今年,全国有1335万考生同时走进...
国泰海通证券:6月开始逐步迎来... 国泰海通证券研报表示,从建材需求来看,2024年6月是一个关键的转折时间,2024年6—9月建材需求...
新一轮“造富”,河南赢了? 新一轮“造富”,河南赢了?近年来,河南在经济领域展现出强劲的发展态势,仿佛开启了一场独特的“造富”之...
爆炒乐惠国际:啤酒业卖水人,亲... 斑马消费 杨伟啤酒行情没来,“啤酒影子股”乐惠国际,近期遭遇爆炒,短短10个交易日股价上涨了67%。...
李蓓找了一圈,还是坚持高股息,... 6月9日,一边是新消费、创新药的集体大涨,一边是李蓓的深刻反思:我做错了什么?反思之后,依然坚持自己...
Siri没来!苹果AI终于不画... 北京时间 6 月 10 日凌晨 1 点,苹果准时拉开了一年一度的全球开发者大会(WWDC)的帷幕。但...
会稽山市值反超 “黄酒一哥”黄... 6月9日,会稽山以22.07元/股收盘,总市值达106亿元,总市值超越"黄酒一哥"古越龙山,成功坐上...
万亿化工市场被垄断!但财报里这... 2025年1月,山东省省长周乃翔做了政府工作报告。在这份工作报告中,重点强调了“新型工业化”。大力推...
国家越开放,会促使我们更加进步... 本报记者 胡 健 陈家兴 近日,在深圳华为总部,围绕大众关心的一些热点话题,人民日报记者一行与华为首...
现在真到了“劝退”计算机专业的... 如今,关于是否到了“劝退”计算机专业的讨论众说纷纭。一方面,计算机专业的就业前景看似广阔,薪资待遇较...
暴涨1400%牛股,造就“新首... 大牛股造就大富豪。福布斯实时富豪榜显示,目前,泡泡玛特(09992.HK)创始人王宁家族以208亿美...
加大国有企业技能人才薪酬分配激... 日前,人力资源社会保障部、财政部、国务院国资委联合印发《关于加大国有企业技能人才薪酬分配激励的通知》...
华尔街三巨头唱多美股! 华尔街... 2025.06.10本文字数:1728,阅读时长大约3分钟作者 |第一财经 樊志菁在时隔四个月重新站...
史诗级变革!医疗、养老、教育迎... 重磅利好来了,中国民生保障体系从“兜底型”向“发展型”跃迁。6月9日,据新华社等权威媒体披露,中共中...
美联储调查:5月消费者通胀预期... 5月,美国消费者对未来通胀的预期全面下降,为2024年来首次,其中短期通胀预期降幅最大。周一,美国纽...
盯上“金银珠宝”,幻方量化的“... 幻方量化,一个熟悉又陌生的名字。这家由梁文锋打造的量化大厂,一度在中国量化基金圈占有崇高的地位——行...
iPhone系统最激进更新来了... iPhone 系统最激进更新已降临。此次更新带来诸多变革,界面设计更趋简洁流畅,操作体验大幅提升。新...
盘前必读丨中办国办发布重磅民生... 【财经日历】国新办就进一步保障和改善民生有关政策情况举行新闻发布会。苹果全球开发者大会WWDC25于...
三年来首例“B转A”方案高票通... B股上市27年的杭州汽轮动力集团股份有限公司(下称“杭汽轮”),在多次尝试转A未果后,终于迈出了实质...
经纬早班车|中概股普遍上涨;亚...   【隔夜重磅】  纳斯达克中国金龙指数涨超2%  美东时间周一(9日),美股三大指数收盘涨跌不一,...
华尔街三巨头唱多美股!新高还有... 在时隔四个月重新站上6000点后,周一标普500指数再接再厉。随着美国总统特朗普4月初在关税问题上的...
【美股】美股三大指数收盘涨跌不... 美东时间9日,美股三大指数收盘涨跌不一,纳指、标普500指数小幅拉升,均续创2月底以来收盘新高,道指...
央企控股上市公司回购增持进度条... 近期,央企控股上市公司正加速跑在增持回购路上。据上海证券报记者统计,新增计划方面,截至发稿,年内有3...
新筑股份拟重组战略转型,四川国... 6月9日晚,新筑股份发布重大资产重组预案,公司拟通过“资产出售+资产购买+募集配套资金”,战略性退出...