枚举法(穷举法)

  1. 定义
    在进行归纳推理时,如果逐个考察了某类事件的所有可能情况,因而得出一般结论,那么该结论是可靠的,这种归纳方法叫做枚举法。

  2. 基本思想
    在分析实际问题时,通过循环或者递归逐一列举出问题中所有的可能情况,然后根据问题的条件判断此答案是否合适,合适就保留,不合适就丢弃,从而找出符合问题要求的答案,最后得出一般结论。
    枚举算法简单粗暴,他暴力的枚举所有可能,尽可能地尝试所有的方法。虽然枚举算法非常暴力,而且速度可能很慢,但确实我们最应该优先考虑的!因为枚举法变成实现最简单,并且得到的结果总是正确的。

  3. 方法步骤
    (1)确定枚举对象
    (2)确定解题的可能范围,即枚举范围,不能遗漏任何一个真正解,同时避取值的重复;
    (3)判断是否是真正解的方法,即判断条件;
    (4)为了提高解决问题的效率,使可能解的范围缩至最小;
    (5)循环验证每一个可能解;

  4. 算法流程图

  5. 例题

题目描述

小明被劫持到X赌城,被迫与其他3人玩牌。
一副扑克牌(去掉大小王牌,共52张),均匀发给4个人,每个人13张。
这时,小明脑子里突然冒出一个问题:
如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序
自己手里能拿到的初始牌型组合一共有多少种呢?

思路

首先,确定枚举对象:
一副扑克牌去掉大小王,不考虑花色,只考虑点数,那么就有1-13共13点数,每个点数有4张牌,即枚举对象就是这13个点数;
其次,确定枚举范围:
每个人拿到13张牌,这13张牌是从52张牌中随机抽取13次拿到的,每次抽取到的点数就是1-13的点数,抽完13次后,13张牌中点数为1-13的牌的张数分别为0-4张,及点数为1的牌可能有0张,也可能有1张或多张;所以枚举范围为0-4;
最后,确定判断条件:
当1-13点数的牌的总数之和等于13张时,为一种牌型;

代码
#include <iostream>
#include<cstring>
using namespace std;int a[13];//0~12共13种点数的牌,a[i]表示点数为i的牌取了几张,每种点数取值范围:0~4张 int main(int argc, char** argv) {memset(a,0,sizeof(a));int count=0;for(a[0]=0; a[0]<=4; a[0]++){for(a[1]=0; a[1]<=4; a[1]++){for(a[2]=0; a[2]<=4; a[2]++){for(a[3]=0; a[3]<=4; a[3]++){for(a[4]=0; a[4]<=4; a[4]++){for(a[5]=0; a[5]<=4; a[5]++){for(a[6]=0; a[6]<=4; a[6]++){    for(a[7]=0; a[7]<=4; a[7]++){for(a[8]=0; a[8]<=4; a[8]++){for(a[9]=0; a[9]<=4; a[9]++){for(a[10]=0; a[10]<=4; a[10]++){for(a[11]=0; a[11]<=4; a[11]++){for(a[12]=0; a[12]<=4; a[12]++){if(a[0]+a[1]+a[2]+a[3]+a[4]+a[5]+a[6]+a[7]+a[8]+a[9]+a[10]+a[11]+a[12]==13){//1-13点数的牌的张数之和等于13时就满足条件 count++;}}}}}}}}}    }}}}}printf("%d",count);return 0;
}
运行结果


暴力法耗时,更高效的方法可以使用DFS深搜回溯法

【枚举法(穷举法)】相关推荐

  1. c语言穷举算法 枚举法,c语言枚举法 穷举法 ppt课件

    枚举法 穷举法 笨人之法 把所有可能的情况一一测试 筛选出符合条件的各种结果进行输出 分析 这是个不定方程 三元一次方程组问题 三个变量 两个方程 x y z 1005x 3y z 3 100设公鸡为 ...

  2. c语言穷举算法 枚举法,c语言枚举法(穷举法).ppt

    c语言枚举法(穷举法) 枚举法(穷举法) "笨人之法": 把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. 百元买百鸡问题分析 百元买百鸡问题分析 优化 继续优化 利用 ...

  3. 【算法】蛮力法/穷举法/枚举法 的基本问题分析

    炮兵问题的优化,设立逻辑数组 蛮力法设计思想 有策略地穷举 + 验证 制定穷举策略 避免重复 简单来说,就是列举问题所有可能的解,然后去看看是否满足题目要求,是一种逆向解题方式.(我也不知道答案是什么 ...

  4. 最大公约数最小公倍数 辗转相除法 辗转相减法(更相减损法) 穷举法

    最大公约数: 1.辗转相除法 2.辗转相减法(更相减损法) 3.穷举法 最小公倍数:两数的乘积除以最大公约数 方法: 1.判断大小,并使大数赋给a,小数赋给b: 2.辗转相除法:在两数相除余数不为0的 ...

  5. java穷举法解方程_枚举法(穷举法)_Java语言程

    枚举法(穷举法)_Java语言程 3.5.1 枚举法(穷举法) 枚举法就是把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出. [例3-20] 百元买百鸡:用一百元钱买一百只鸡.已知公鸡5元/ ...

  6. C#跳转语句 迭代法 穷举法

    一.跳转语句 break & continue break:跳出循环,终止此循环,不管下面还有多少次,全部跳过. string a=" ",for (int i=1;i&l ...

  7. c语言变量相等问题穷举法,C语言穷举法经典例题.ppt

    <C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...

  8. 第1-6课:算法设计常用思想之穷举法

    这一课我们来介绍穷举法,有一些人把穷举法视为上不了台面的低级方法,这种想法是错误的,虽然穷举思想的原理简单,但是用穷举思想设计一个算法却一点也不简单.各种算法模式或思想没有高下之分,关键在于你是否能灵 ...

  9. c语言穷举法举例,C语言穷举法经典例题.ppt

    <C语言穷举法经典例题.ppt>由会员分享,可在线阅读,更多相关<C语言穷举法经典例题.ppt(18页珍藏版)>请在人人文库网上搜索. 1.枚举法(穷举法),"笨人之 ...

  10. 穷举法c语言吃饭,C语言穷举法经典例题

    枚举法(穷举法),"笨人之法":把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出.,分析:这是个不定方程--三元一次方程组问题(三个变量,两个方程)x+y+z=1005x ...

最新文章

  1. (C++)除基取余法:将十进制数转化为Q进制数
  2. vivo V15 Pro渲染图曝光 弹出式摄像头后置三摄
  3. final关键字详解
  4. 构建 Netflix 分布式追踪(tracing)体系
  5. fork和vfork,exec
  6. 防治计算机病毒教案,小学信息技术教案:《防治计算机病毒-计算机病毒》
  7. python开新窗口的方法_python tkinter点击按钮打开新窗口
  8. iphone5s越狱之后必装
  9. Android字符小写转大写,大写转小写
  10. 数字图像处理第二章——数字图像基础
  11. LeetCode 91~95
  12. 陕西邮电职业技术学院计算机系怎么样,陕西邮电职业技术学院的办学实力怎么样?...
  13. 神武手游做任务链服务器维护,神武手游跑环攻略 跑环注意事项详解
  14. 如何通过光耦合器连接继电器
  15. python hist直方图拟合曲线_详解用Python为直方图绘制拟合曲线的两种方法
  16. 基于 Apache Kylin 的微博舆情实时分析(内含 Demo)
  17. 负债均衡,反向代理以及常见的分发策略
  18. JS-String类型及方法
  19. USB协议详解第0讲(系列博文介绍)
  20. VScode中open in browser 和 view in browser默认浏览器配置

热门文章

  1. 逻辑代数基本公式及定律
  2. 胧月初音未来计算机,胧月---初音未来(调教用)
  3. 万能遥控程序c语言,单片机解码万能红外遥控器的C51程序
  4. synplify user guide note1
  5. Linux系统忘记了root密码怎么办?
  6. Java pta练习题 第一章
  7. Shell ❀ 条件判断语句
  8. 字典破解密码实验(Python3)
  9. 17.Ubuntu命令行下添加新用户
  10. AN OPEN-SOURCE SPEAKER GENDER DETECTION FRAMEWORK FOR MONITORING GENDER EQUALITY