枚举算法(穷举法)(暴力法)

1.什么是枚举

枚举是指在一定范围内将所有情况一一列举,再通过条件判断得到自己想要的答案;

2.枚举核心

3.使用枚举的基本步骤

 

 4.例题

4.1.我国古代数学家张丘建在他的《算经》一书中提出了著名的“百钱买百鸡”问题:鸡翁一值钱五;鸡母一值钱三;鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

枚举对象:坤翁:x;坤母:y;坤雏:z(100 - x - y);

枚举范围(最大值为100钱全买同一种的数量):坤翁0~20;坤母0~33;坤雏0~100(个数上限为100)

判断条件:共一百只且共一百钱

#include<iostream>int main()
{using namespace std;for (int x = 0; x <= 20; x++){for (int y = 0; y <= 33; y++){for (int z = 0; z <= 100; z++){if ((x + y + z == 100) && (x * 5 + y * 3 + z / 3 == 100))cout << x << ' ' << y << ' ' << z << endl;}}}return 0;
}

 但是三层循环效率太低,可以优化成:

#include<iostream>int main()
{using namespace std;for (int x = 0; x <= 20; x++){for (int y = 0; y <= 33; y++){if ((x * 5 + y * 3 + (100 - x - y) / 3 == 100))cout << x << ' ' << y << ' ' << (100 - x - y) << endl;}}return 0;
}
4.2对于长度为5位的一个o1串,每一位都可能是О或1,一共有32种可能。
它们的前几个是:
00000
00001

00010

00011

00100

00101

00110

00111
请按从小到大的顺序输出这32种01串。

#include<iostream>int main()
{using namespace std;int count = 0;for (int a = 0; a <= 1; a++){for (int b = 0; b <= 1; b++){for (int c = 0; c <= 1; c++){for (int d = 0; d <= 1; d++){for (int e = 0; e <= 1; e++){++count;cout << a << b << c << d << e << endl;}}}}}cout << count << endl;return 0;
}
4.3将一个数进行质因数分解并输出

短除法:

 

#include <iostream>int main()
{using namespace std;int n;cin >> n;for (int i = 2; i <= n; i++){while (n % i == 0){cout << i << ' ';n = n / i;}}return 0;
}

由于2是最小的质数,同时2是检验偶数的标准,所以一直除以2直到不能整除时,n就为奇数,

然后就换下一个能够整除的质数继续除,直到n = 1;

4.4有一个n×m方格的棋盘,求其方格包含多少正方形、长方形(不包含正方形)。
输入格式:
一行,两个正整数n,m

输出格式
—行,两个正整数,分别表示方格包含多少正方形、长方形(不包含正方形)。

 

 组合问题:

#include <iostream>int main()
{using namespace std;int n, m;int sum_Cube = 0;int sum_Cuboid = 0;cin >> n >> m;for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){if (i == j)sum_Cube += (n - i + 1) * (m - j + 1);else{sum_Cuboid += (n - i + 1) * (m - j + 1);}}}cout << sum_Cube << ' ' << sum_Cuboid << endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422772.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springsecurity集成kaptcha功能

前端代码 本次采用简单的html静态页面作为演示&#xff0c;也可结合vue前后端分离开发&#xff0c;复制就可运行测试 项目目录 登录界面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…

【.NET Core】多线程之线程池(ThreadPool)详解(一)

【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09; 文章目录 【.NET Core】多线程之线程池&#xff08;ThreadPool&#xff09;详解&#xff08;一&#xff09;一、概述二、线程池的应用范围三、线程池特性3.1 线程池线程中的异常…

OR36 链表的回文结构

目录 一、思路 二、代码 一、思路 找到中间节点 后半部分逆置链表 定义两个指针&#xff0c;一个从头开始出发 一个从中间位置开始出发 但是注意&#xff1a;链表个数可能是奇数或者偶数&#xff0c;需要注意中间节点的计算 二、代码 struct ListNode* reverseList(str…

linux的kali安装,换源,更新包

下载kali kali.org进入官网后点第二个 然后点第一个 解压kali 下载后获得.7z压缩包&#xff0c;建议移动到合适自己电脑的位置进行解压&#xff0c;我喜欢放在D盘 启动kali 双击进入解压出的文件夹&#xff0c;将唯一一个.vmx文件用vmware打开&#xff08;没装的自行提前装…

【Redis】更改redis中的value值

今天继续进步一点点~~ 背景&#xff1a;今天有个前端的同事问我&#xff0c;能不能在Redis中他本人登录公众号的 sessionID 加上一列openID 于是我上网查了一堆在Redis里面的命令&#xff0c;以及不同的客户端怎么输入命令&#xff0c;但是后来问了下同事&#xff0c;他就给我…

[设计模式Java实现附plantuml源码~创建型] 对象的克隆~原型模式

前言&#xff1a; 为什么之前写过Golang 版的设计模式&#xff0c;还在重新写Java 版&#xff1f; 答&#xff1a;因为对于我而言&#xff0c;当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言&#xff0c;更适合用于学习设计模式。 为什么类图要附上uml 因为很…

设置代码模板创建sql映射文件、Mybatis主配置文件

目录 1、Sql映射&#xff08;Sql Mapper&#xff09;文件的介绍 2、Mybatis的主配置文件的介绍 3、通过代码模板创建Sql映射文件 4、通过代码模板创建Mybatis主配置文件 1、Sql映射&#xff08;Sql Mapper&#xff09;文件的介绍 <?xml version"1.0" encod…

国产操作系统:VirtualBox安装openKylin-1.0.1虚拟机并配置网络

国产操作系统&#xff1a;VirtualBox安装openKylin-1.0.1虚拟机并配置网络 openKylin 操作系统目前适配支持X86、ARM、RISC-V三个架构的个人电脑、平板电脑及教育开发板&#xff0c;可以满足绝大多数个人用户及开发者的使用需求。适用于在VirtualBox平台上安装openKylin-1.0.1…

梳理一下若依框架的权限过滤系统

梳理一下若依框架的权限过滤系统 首先&#xff0c;我们直入主题&#xff0c;且看这段代码 /*** 获取用户列表*/ PreAuthorize("ss.hasPermi(system:user:list)") GetMapping("/list") public TableDataInfo list(SysUser user) {startPage();List<SysU…

力扣62. 不同路径

动态规划 思路&#xff1a; 定义 dp[r][c] 为到达坐标 (r, c) 的路径数&#xff1a; 它只能有同一行左边相邻方格向右到达或者同一列上方相邻方格向下到达&#xff1b;状态转移方程&#xff1a; dp[r][c] dp[r][c - 1] dp[r - 1][c]初始状态 dp[0][0] 1第一行的路径数是 1第…

GPT-4开启人工智能赋能教育的新时代

2022年11月30日&#xff0c;美国 OpenAI公司发布了一款最新研发的生成式人工智能产品——ChatGPT&#xff08;Chat Generative Pre-trained Transformer&#xff09;。ChatGPT的推出&#xff0c;仅用了短短两个月时间就快速占领了人工智能领域的主导地位&#xff0c;成为历史上…

你必须知道postman和Jmeter做接口测试区别

1. 用例组织方式 Jmeter的组织方式相对比较扁平&#xff0c;它首先没有WorkSpace的概念&#xff0c;直接是TestPlan&#xff0c;TestPlan下创建的Threads Group就相当于TestCase&#xff0c;并没有TestSuite的层级。 Postman功能上更简单&#xff0c;组织方式也更轻量级&…