- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章程序设计方法
本章主要内容:
尝试法及其程序模块结构 2 课时
递推算法程序 2 课时
迭代算法程序 2 课时
重点、难点:尝试法、递推算法、迭代算法对应的基本程序模块及程序实现
上机试验: 6 课时
第一节 尝试法及其程序模块结构
凡是约束条件或方程个数少于变量个数的所有算法都属于尝试法。除了明显的约束条件
(即能用常用数学公式描述的条件)之外,能用尝试法解决的所有问题都还带一个特殊条件:
这个条件使问题只有有限个解。
尝试法在其它书籍和文献中也被称为枚举法或穷举法,因尝试范围不是唯一的,用穷难
以解释清楚,故这里称为尝试法。
用尝试法编写程序时,首先得确定尝试范围,尝试范围由循环重数和循环条件确定,循
环重数等于变量个数,各变量的取值范围就是对应循环的循环条件,用尝试法求解的所有问
题所涉及的变量至少可确定其上限和下限中的一个,对于上下限都能确定的循环用for 型循
环,否则用while 型循环。
其次要确定定解条件。所谓尝试就是用约束条件作为条件语句中的条件判断是否是解,
这一过程称为定解。因此约束条件也称为定解条件,定解通常在最内层循环中进行,当变量
之间存在简单数学关系时,循环重数可减少。利用关系减少了循环重数后,定解条件自然变
少(自然满足)。定解条件中还应显含或隐含特殊条件,尝试法的算法也可用带计算过程和
计算条件的数学公式表述。
例6.1 百钱买百鸡,公鸡只三文,小鸡文三只,母鸡一文一,品种要齐全,各买多少只?
算法及分析:
设公鸡、母鸡及小鸡只数分别为x,y,z ,由题目知:
x y z 100
6 1.1
9x 3y z 300
本题的隐含条件是x,y,z 为整数,假设解为x * ,y * ,z * T ,则有:
*
x x x y z 100 x 1,2,3, ,99
*
y y y 1,2,3, ,99 6 1.2
*
z z 9x 3y z 300 z 3,6,9, ,99
(6- 1.2)式对应一个三重循环,外循环头为:
for(x=1;x=99;x++)
中循环头为:
for(y=1 ;y=99 ;y++)
内循环头为:
for(z=3;z=99;z+=3)
定解条件 (为约束条件)及内循环体为:
if((x+y+z==100) (9*x+3*y+z==300))
printf(x=%d, y=%d, z=%d,x,y,z);
加上说明和输出语句则会很快写出程序:
main( )
{ int x,y,z;
int num=0;
for(x=1;x100;x++)
for(y=1;y100;y++)
for(z=3;z100;z+=3)
if(((x+y+z)==100) (
文档评论(0)