枚举法(穷举法),“笨人之法”:把所有可能的情况一一测试,筛选出符合条件的各种结果进行输出。,分析:这是个不定方程——三元一次方程组问题(三个变量,两个方程)x+y+z=1005x+3y+z/3=100设公鸡为x只,母鸡为y只,小鸡为z只。,,百元买百鸡问题分析,,,,,x+y+z=1005x+3y+z/3=100,,三重循环,voidmain(){intx,y,z;for(x=0;x<=100;x++)for(y=0;y<=100;y++)for(z=0;z<=100;z++){if(x+y+z==100}},结果:x=0,y=25,z=75x=4,y=18,z=78x=8,y=11,z=81x=12,y=4,z=84,【讨论】为什么多了几组解?,,?,百元买百鸡问题分析,voidmain(){intx,y,z;for(x=0;x<=100;x++)for(y=0;y<=100;y++)for(z=0;z<=100;z++){if(z%3==0}},结果:x=0,y=25,z=75x=4,y=18,z=78x=8,y=11,z=81x=12,y=4,z=84,【讨论】此为“最笨”之法——要进行101101101=1030301次(100多万次)运算。,,优化,voidmain(){intx,y,z;for(x=0;x<=100;x++)for(y=0;y<=100;y++){z=100-x-y;if(z%3==0}},【讨论】令z=100-x-y只进行101101=10201次运算(前者的1%),取x<=20,y<=33只进行2134=714次运算(第1种运算的6.9e-4),,,,,继续优化,voidmain(){intx,y,z;for(x=0;x<=14;x++)for(y=0;y<=25;y++)if(7*x+4*y==100){z=100-x-y;printf("cocks=%d,hens=%d,chickens=%d\n",x,y,z);}},取x<=14,y<=25只进行1526=390次运算,课堂讨论:谁做的好事?有四位同学中的一位做了好事,不留名,表扬信来了之后,校长问这四位是谁做的好事。A说:不是我。B说:是C。C说:是D。D说:C胡说。已知三个人说的是真话,一个人说的是假话。现在要根据这些信息,找出做了好事的人。,编程思路:如何找到该人,一定是“先假设该人是做好事者,然后到每句话中去测试看有几句是真话”。“有三句是真话就确定是该人,否则换下一人再试”。比如,先假定是A同学,让thisman=A;代入到四句话中A说:thisman!=‘A’;‘A’!=‘A’假,值为0。B说:thisman==‘C’;‘A’==‘C’假,值为0。C说:thisman==‘D’;‘A’==‘D’假,值为0。D说:thisman!=‘D’;‘A’!=‘D’真,值为1。显然,不是A做的好事(四个关系表达式值的和为1),再试B同学,让thisman=‘B’;代入到四句话中A说:thisman!=‘A’;‘B’!=‘A’真,值为1。B说:thisman==‘C’;‘B’==‘C’假,值为0。C说:thisman==‘D’;‘B’==‘D’假,值为0。D说:thisman!=‘D’;‘B’!=‘D’真,值为1。显然,不是B所为(四个关系表达式值的和为2),再试C同学,让thisman=‘C’;代入到四句话中A说:thisman!=‘A’;‘C’!=‘A’真,值为1。B说:thisman==‘C’;‘C’==‘C’真,值为1。C说:thisman==‘D’;‘C’==‘D’假,值为0。D说:thisman!=‘D’;‘C’!=‘D’真,值为1。显然,就是‘C’做了好事(四个关系表达式值之和为3)这时,我们可以理出头绪,要用枚举法,一个人一个人地去试,四句话中有三句为真,该人即所求。,#includevoidmain(){charthisman;intsa,sb,sc,sd,cond;for(thisman=A;thisman<=D;thisman++){sa=(thisman!=A);sb=(thisman==C);sc=(thisman==D);sd=(thisman!=D);cond=sa+sb+sc+sd;if(cond==3)printf("做好事的人是:%c\n",thisman);}},利用穷举法求解趣味智力题,(韩信点兵)韩信有一队兵,他想知道有多少人,便让士兵排队报数。按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。你知道韩信至少有多少兵吗?设兵数为x,则x应满足:x%5==1for(x=1;x<5000;x++){if(x%5==1}}}/*属于“瞎猫碰死耗子”的做法*/,穷举法求解韩信点兵,#includevoidmain(){intx;for(x=1;;x++){if(x%5==1}}}/*死循环——永远不会退出的循环*/,穷举法求解韩信点兵,穷举法求解韩信点兵:方案1-goto,#includevoidmain(){intx;for(x=1;;x++){if(x%5==1},穷举法求解韩信点兵:方案2-break,#includevoidmain(){intx;for(x=1;;x++){if(x%5==1}}},穷举法求解韩信点兵:方案3-标志变量,#includevoidmain(){intx;intfind=0;/*设置找到标志为假*/for(x=1;!find;x++){if(x%5==1}}},

展开阅读全文

穷举法c语言吃饭,C语言穷举法经典例题相关推荐

  1. 【C语言|菜鸟教程】100道进阶经典例题详细解答(实例一)

    [C语言|菜鸟教程]100道基础经典例题详解(实例一) 文章目录 前言 一.题目描述 二.题目分析 三.解题 (1)解题方法一 1. 思路 2. 程序运行 3. 程序运行结果 (2)解题方法二 1. ...

  2. 【C语言|菜鸟教程】100道进阶经典例题详细解答(实例二)

    文章目录 前言 一.题目描述 二.题目分析 三.解题 (1)解题方法一----if-else if语句 1. 思路 2. 程序运行 3. 程序运行结果 (2)解题方法二----if-else if语句 ...

  3. 解决回溯法 - 回溯到底是个什么东西(含有大量经典例题加详细分析)

    文章目录 一 .用最通俗的话解释回溯思想: 二.经典例子 1.经典样例1:(01背包问题的回溯解法) 2. 经典样例二:N皇后问题 3. 经典样例三:油田问题 4. 经典样例四:素数环问题 5. 经典 ...

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

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

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

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

  6. C语言排序方法-----二元选择排序法

    上一篇文章C语言排序方法-----选择排序法中分析了选择排序法,这篇文章分析一下选择排序法的优化算法,二元选择排序法,在选择排序法中每次找一个最大或者最小的数据放到开始位置,那么为了提高效率可以每次比 ...

  7. 蛮力法查找有序数列c语言,算法——蛮力法之选择排序和冒泡排序c++实现

    这次实现的是蛮力法中的两个例子,选择排序法和冒泡排序法,使用的编译环境是vs2013,下面对这两个算法做一个简单介绍,然后是两个算法的c++实现代码. 选择排序法比较的范围是整个列表,每次扫描结束找出 ...

  8. C语言编程规范之匈牙利命名法

    匈牙利命名法      匈牙利命名法是一种编程时的命名规范.基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分.要基于容易记忆容易理解的原则 ...

  9. c语言尾插法步骤,头插法-顺序输出,尾插法-反向输出(C语言)

    #include #include #include typedef struct node{ int data; struct node *next; }Node, *pNode; pNode re ...

最新文章

  1. ubuntu 12.04 添加 IP并配置DNS
  2. 清华导学故事|卓晴:在每个人生阶段中,找到自己的定位
  3. mysql封装成类_python操作mysql封装成类
  4. IOS-webService
  5. [转]默认构造函数的作用
  6. K8S完整部署项目实战案例
  7. wxWidgets:内存检查示例
  8. PHP对Json字符串解码返回NULL的一般解决方案
  9. linux --- 基础指令
  10. Python压平嵌套列表的一种方法
  11. umask 文件预设权限掩码
  12. java|jsp类成品展示_jsp学生诚信素质评价系统
  13. pop3协议手机开通服务器,手机服务器pop3设置方法
  14. Linux系统封装及配置
  15. h264格式视频转mp4
  16. 数字转换大写 python_数字转换
  17. less转换css及html里面JS的引入
  18. 垃圾分类数据集(垃圾图片数据集)
  19. Unreal4引擎开发学习日志
  20. ehvierwer登录与不登录_【虎嗅早报】抖音回应无法用微信账号登录:不清楚是否为人为...

热门文章

  1. 基于MATLAB的图像处理研究
  2. STM32下载器设置
  3. 仿天猫多图遮罩层效果
  4. 毫米波雷达在路况识别中的应用
  5. oracle java vm卸载,关于卸载oracle
  6. AcrelCloud-6000安全用电云平台在某景区的应用
  7. 边缘检测与轮廓跟踪的差异
  8. □ 影片名:《我的野蛮女友》(108579) 在线播放
  9. python特性高移植性_用户选择使用Python的原因有哪些
  10. 肇兴:男人的天堂,来了就不想走--义工篇