当前位置: 首页 > news >正文

浅谈穷举法

穷举法

穷举法是一种通过逐一列举所有可能情况来寻找解决方案的方法。就像找到一把钥匙打开一把锁,我们会尝试每一把钥匙直到找到正确的那一把。比如,如果你忘记了自己的密码,可以尝试每一种可能的组合直到找到正确的密码为止

图片

图片

图片

穷举法的结构
 

count = 0;  //所求解的个数
// i , j , k 分别为解空间
for( i = <解空间下限> ; i = <解空间上限> ; i++)
{for( j = <解空间下限> ; j = <解空间上限> ; j++){for( k = <解空间下限> ; k = <解空间上限> ; k++){if(<约束条件>){printf(<满足条件的解>);count++;}}}
}  

图片

图片

穷举法的应用条件

解空间相对较小

也就是说答案的空间是已知的,在某个区间,或者某个集合内

1. 解决九宫格数独谜题:在一个九宫格数独谜题中,每个格子需要填入1到9的数字,且每行、每列、每个九宫格内的数字不能重复。可以通过逐一尝试每个格子的数字组合来找到唯一解。

2.寻找一个四位数的密码:假设密码为四位数字,且每位数字在0到9之间,可以通过穷举法逐一尝试所有可能的数字组合来找到正确的密码。

图片

可以通过有限次尝试找到答案

1.猜数字游戏:在一个猜数字游戏中,玩家需要猜一个数字,范围在1到100之间。通过有限次尝试不同的数字,玩家可以找到正确的答案。

2.解开一个简单的拼图:在一个简单的拼图游戏中,玩家需要将零散的拼图块组合成完整的图案。通过有限次尝试不同的组合方式,玩家可以完成拼图。

图片

图片

图片

穷举法的具体求解过程

确定需要哪些变量

首先分析题目,明确我们需要的变量是什么,还要分析出变量的数据类型

确定每个变量的取值范围

变量的取值范围也就是其对应的解空间,不同的变量有着不同的解空间,需要我们加以分析

确定限制条件

1.分析需要几层循环(一般是求解几个变量就用几层循环嵌套)

2.在最内层当中增加限制条件(if判断语句等等)

图片

穷举法虽然看似很笨拙,但由于其简单的原因,很多的问题都可以通过暴力的穷举法来解决(不考虑时间因素其他)

例如素数问题,约瑟夫环问题(今年春晚刘谦的魔术就是这个原理类似,我做过一个c语言的复刻,视频在b站,各位有兴趣的话可以了解了解)

图片


http://www.mrgr.cn/news/31458.html

相关文章:

  • Rust学习(二):rust基础语法Ⅰ
  • 深入理解指针
  • 基于STM32的智能宠物自动喂食器设计思路:TCP\HTTP、Node.js技术
  • 网站小程序app怎么查有没有备案?
  • hbase 工具类
  • 7个常用的JavaScript数组操作进阶用法
  • 【C/C++语言系列】实现单例模式
  • 在PyQt的QLabel控件上显示图像指南
  • 50.面向对象进阶训练-学生类
  • 达梦数据库踩坑
  • 线性规划中可行域为什么一定是凸的--证明
  • 前端框架对比选择:如何在众多技术中找到最适合你的
  • C++ 中noexcept关键字的含义和使用方法
  • shell脚本(9.20)
  • lettuce引起的Redis command timeout异常
  • 大数据新视界 --大数据大厂之AI 与大数据的融合:开创智能未来的新篇章
  • sql中的union与union all区别
  • 队列基础概念
  • 基于机器学习的癌症数据分析与预测系统实现,有三种算法,bootstrap前端+flask
  • 【读书笔记-《30天自制操作系统》-23】Day24
  • 每天五分钟计算机视觉:将人脸识别问题转换为二分类问题
  • 完美转发、C++11中与线程相关的std::ref
  • IDEA配置全局的maven环境
  • 《深度解析 C++中的拷贝构造函数:概念、作用与实践》
  • Vue学习记录之六(组件实战及BEM框架了解)
  • 渐变色代码主题你受得了吗