购买

¥16.0

加入VIP
  • 专属下载券
  • 上传内容扩展
  • 资料优先审核
  • 免费资料无限下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C语言穷举法经典例题

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

C语言穷举法经典例题

艾攀
2019-04-02 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《C语言穷举法经典例题ppt》,可适用于市场营销领域

第章程序控制结构枚举法(穷举法)ldquo笨人之法rdquo:把所有可能的情况一一测试筛选出符合条件的各种结果进行输出。分析:这是个不定方程mdashmdash三元一次方程组问题(三个变量两个方程)x+y+z=x+y+z=设公鸡为x只母鸡为y只小鸡为z只。第章程序控制结构百元买百鸡问题分析x+y+z=x+y+z=三重循环第章程序控制结构voidmain(){intx,y,zfor(x=x=x)for(y=y=y)for(z=z=z){if(xyz==*x*yz==)printf(x=d,y=d,z=dn,x,y,z)}}结果:x=,y=,z=x=,y=,z=x=,y=,z=x=,y=,z=【讨论】为什么多了几组解第章程序控制结构百元买百鸡问题分析voidmain(){intx,y,zfor(x=x=x)for(y=y=y)for(z=z=z){if(z==xyz==*x*yz==)printf(x=d,y=d,z=dn,x,y,z)}}结果:x=,y=,z=x=,y=,z=x=,y=,z=x=,y=,z=【讨论】此为ldquo最笨rdquo之法mdashmdash要进行timestimes=次(多万次)运算。第章程序控制结构优化voidmain(){intx,y,zfor(x=x=x)for(y=y=y){z=xyif(z==*x*yz==)printf(cocks=d,hens=d,chickens=dn,x,y,z)}}【讨论】令z=xy只进行times=次运算(前者的)取x=,y=只进行times=次运算(第种运算的e)第章程序控制结构第章程序控制结构继续优化voidmain(){intx,y,zfor(x=x=x)for(y=y=y)if(*x*y==){z=xyprintf(cocks=d,hens=d,chickens=dn,x,y,z)}}取x=,y=只进行times=次运算第章程序控制结构课堂讨论:谁做的好事?有四位同学中的一位做了好事不留名表扬信来了之后校长问这四位是谁做的好事。A说:不是我。B说:是C。C说:是D。D说:C胡说。已知三个人说的是真话一个人说的是假话。现在要根据这些信息找出做了好事的人。第章程序控制结构编程思路:如何找到该人一定是ldquo先假设该人是做好事者然后到每句话中去测试看有几句是真话rdquo。ldquo有三句是真话就确定是该人否则换下一人再试rdquo。比如先假定是A同学让thisman=#A#代入到四句话中A说:thisman!=lsquoArsquolsquoArsquo!=lsquoArsquo假值为。B说:thisman==lsquoCrsquolsquoArsquo==lsquoCrsquo假值为。C说:thisman==lsquoDrsquolsquoArsquo==lsquoDrsquo假值为。D说:thisman!=lsquoDrsquolsquoArsquo!=lsquoDrsquo真值为。显然不是#A#做的好事(四个关系表达式值的和为)第章程序控制结构再试B同学让thisman=lsquoBrsquo代入到四句话中A说:thisman!=lsquoArsquolsquoBrsquo!=lsquoArsquo真值为。B说:thisman==lsquoCrsquolsquoBrsquo==lsquoCrsquo假值为。C说:thisman==lsquoDrsquolsquoBrsquo==lsquoDrsquo假值为。D说:thisman!=lsquoDrsquolsquoBrsquo!=lsquoDrsquo真值为。显然不是#B#所为(四个关系表达式值的和为)第章程序控制结构再试C同学让thisman=lsquoCrsquo代入到四句话中A说:thisman!=lsquoArsquolsquoCrsquo!=lsquoArsquo真值为。B说:thisman==lsquoCrsquolsquoCrsquo==lsquoCrsquo真值为。C说:thisman==lsquoDrsquolsquoCrsquo==lsquoDrsquo假值为。D说:thisman!=lsquoDrsquolsquoCrsquo!=lsquoDrsquo真值为。显然就是lsquoCrsquo做了好事(四个关系表达式值之和为)这时我们可以理出头绪要用枚举法一个人一个人地去试四句话中有三句为真该人即所求。第章程序控制结构#includestdiohvoidmain(){charthismanintsa,sb,sc,sd,condfor(thisman=#A#thisman=#D#thisman){sa=(thisman!=#A#)sb=(thisman==#C#)sc=(thisman==#D#)sd=(thisman!=#D#)cond=sasbscsdif(cond==) printf(做好事的人是:cn,thisman)}}第章程序控制结构利用穷举法求解趣味智力题(韩信点兵)韩信有一队兵他想知道有多少人便让士兵排队报数。按从至报数最末一个士兵报的数为按从至报数最末一个士兵报的数为按从至报数最末一个士兵报的数为最后再按从至报数最末一个士兵报的数为。你知道韩信至少有多少兵吗?设兵数为x则x应满足:x==x==x==x==穷举法对x从开始试验第章程序控制结构穷举法求解韩信点兵#includestdiohvoidmain(){intxfor(x=xx){if(x==x==x==x==){printf(x=dn,x)}}}*属于ldquo瞎猫碰死耗子rdquo的做法*第章程序控制结构穷举法求解韩信点兵#includestdiohvoidmain(){intxfor(x=x){if(x==x==x==x==){printf(x=dn,x)}}}*死循环mdashmdash永远不会退出的循环*第章程序控制结构穷举法求解韩信点兵:方案goto#includestdiohvoidmain(){intxfor(x=x){if(x==x==x==x==){printf(x=dn,x)gotoEND}}END:}第章程序控制结构穷举法求解韩信点兵:方案break#includestdiohvoidmain(){intxfor(x=x){if(x==x==x==x==){printf(x=dn,x)break}}}第章程序控制结构穷举法求解韩信点兵:方案标志变量#includestdiohvoidmain(){intxintfind=*设置找到标志为假*for(x=!findx){if(x==x==x==x==){printf(x=dn,x)find=}}}

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/18

¥16.0

立即购买

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利