04穷举法.ppt





《04穷举法.ppt》由会员分享,可在线阅读,更多相关《04穷举法.ppt(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 穷举法概 述 穷举法的基本思想是不重复、不遗漏地穷举所有 可能情况,从中寻找满足条件的结果。穷举法充分利用了计算机处理的高速特性,避免 复杂的逻辑推理过程,使问题简单化。使用穷举法的关键是要确定正确的穷举的范围。例1:百钱百鸡问题。公鸡5文钱1只,母鸡3文钱1只,小鸡一文钱3只。100文钱如何卖100只鸡?条件分析 设买 x 只公鸡,y 只母鸡,z 只小鸡,则有:x+y+z=100 5x+3y+z/3=100 且:x、y、z 都是整数;0 x 20;0 y 33;0 z 99;z30。基本算法思想,上述方程属于不定方程,解并不唯一,因此,可 用穷举法穷举法对 x、y、z 的所有组合情况,测试
2、满足 条件的解。具体是:把x可能值020和y可能值033用二重循环来组 合,每个x和y组合都可得到z值,即z=100-x-y,若x、y、z值使5x+3y+z/3=100成立,则该组x、y、z即为一组所求值。即:穷举范围:穷举范围:x:020,y:033,z:100-x-y 判断式:判断式:z%3=0&5*x+3*y+z/3=100 另一方法是:把x可能值020、y可能值033和z 可能值099用三重循环来组合,若x、y、z值使 5x+3y+z/3=100和x+y+z=100同时成立,则该组x、y、z即为一组所求值。即:穷举范围:穷举范围:x:020,y:033,z:099 判断式:判断式:z%
3、3=0&5*x+3*y+z/3=100&x+y+z=100main()int x,y,z,j=1;printf(Possible solutions to buy 100 fowls whith 100 wen:n);for(x=0;x=20;x+)for(y=0;y=33;y+)z=100-x-y;if(z%3=0&5*x+3*y+z/3=100)printf(%2d:cock=%-2d hen=%-2d chicken=%-2dn,j,x,y,z);j+;运行结果:Possible solutions to buy 100 fowls whith 100 wen:1:cock=0 hen=
4、25 chicken=75 2:cock=4 hen=18 chicken=78 3:cock=8 hen=11 chicken=81 4:cock=12 hen=4 chicken=84例2:打印出所有的“水仙花数”。所谓“水仙花 数”是指一个三位正整数,其各位数字的立方和 等于该数本身,例如:153=13+53+33。穷举范围:穷举范围:即把所有的三位正整数100999按题 意一一进行判断。判断式:判断式:如果一个三位正整数n的百位、十位、个位上的数字分别为i、j、k,则判断式为:n=i3+j3+k3 如何分解三位数如何分解三位数n的百位、十位、个位:的百位、十位、个位:百位:i=n/10
5、0;十位:j=(n/10)%10;个位:k=n%10;#include stdio.hmain()int n,i,j,k;for(n=100;n=999;n+)i=n/100;j=(n/10)%10;k=n%10;if(n=i*i*i+j*j*j+k*k*k)printf(%d=%d3+%d3+%d3n,n,i,j,k);运行结果:153 13+53+33370 33+73+03371 33+73+13407 43+03+73例3:中国余数定理:“有物不知几何,三三数余一,五五数余二,七七数余三,问:物有几何?”。编程求1000以内所有解。穷举范围:穷举范围:整数m为:11000。判断式:判断
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 04 穷举

限制150内