博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【算法总结】枚举
阅读量:5088 次
发布时间:2019-06-13

本文共 892 字,大约阅读时间需要 2 分钟。

算法总结-枚举

定义:依次尝试搜索空间中所有的解,测试其是否符合条件,若符合则输出答案,否则继续测试下一组解。

注意:在使用枚举这种相对较为暴力的解法来进行解题时,我们对其时间复杂度要做特别的关注。枚举问题的时间复杂度往往与需要枚举的情况个数有关,因为我们必须不遗不漏地枚举每一种可能成为答案的情况。所以搜索空间越大,枚举的时间复杂度就越高。所以,我们在对某一问题进行枚举时,必须保证其时间复杂度在题目时限可以接受的范围内。

在复杂度允许的范围内,直白的枚举思路简单,代码清晰,在一些看似无从下手的题目面前,我们可以换个角度,试着从更暴力的角度去思考。

套路:

  1. 给出解空间,建立简洁的数学模型:找出解对应的可能情况,使模型中的变量数尽可能少,它们之间相互独立
  2. 减少搜索的空间:利用知识缩小模型中各变量的取值范围,避免不必要的计算。
  3. 采用合适的搜索顺序:搜索空间的遍历顺序要与模型中条件表达式一致。

例题:

#include
using namespace std;int main(){ int n; while (cin >> n) { for (int x = 0; x <= 100; x++) { for (int y = 0; y <= 100 - x; y++) { int z = 100 - x - y; if (x * 5 * 3 + y * 3 * 3 + z <= n * 3) { cout << "x=" << x << ",y=" << y << ",z=" << z << endl; } } } } return 0;}

 

转载于:https://www.cnblogs.com/yun-an/p/11048356.html

你可能感兴趣的文章
【Java】向*.txt文档里面重复添加同一个字符串
查看>>
http://www.hulian.top/zixun/post/4771.html
查看>>
SCN试验之二 checkpoin scn 与数据库scn的关系
查看>>
JAVA数据结构——集合之LinkedList
查看>>
雷林鹏分享:PHP MySQL 预处理语句
查看>>
Lam逻辑卷创建管理
查看>>
Picture poj1177
查看>>
时区间时间的转换 1152
查看>>
1020 导弹拦截
查看>>
Android菜单详解(五)——使用XML生成菜单
查看>>
iCheck:超级精美的自定义复选框 & 单选按钮
查看>>
10套免费的 Photoshop UI 元素以及 PSD 素材
查看>>
在Linux上安装Git
查看>>
Android显示GIF动画完整示例(一)
查看>>
(图解)情景化知识管理 --- 第三代知识管理典型实践
查看>>
Loadrunner11 安装、破解、汉化的完整安装
查看>>
c++ 带中文汉字的字符串截取
查看>>
OpenCV特征点提取----Fast特征
查看>>
Elasticsearch 优化
查看>>
开发安卓app配置
查看>>