




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
穷举法基本思想是首先根据问题的部分条件预估答案的范围 然后在此范围内对所有可能的情况进行逐一验证 直到全部情况通过了验证为止 若某个情况使验证符合题目的全部条件 则该情况为本题的一个答案 若全部情况验证结果均不符合题目的全部条件 则说明该题无答案 穷举法及其应用 特点算法简单 容易理解 但运算量大 通常可以解决 有几种组合 是否存在 求解不定方程等类型的问题 用循环结构实现 首页 上页 下页 节 末页 结束 关于循环 循环变量初值循环条件循环体循环变量的增量 进入循环之前执行 只做一次多次判断重复执行的语句多次执行 控制循环结束 while do while for if goto 适合用在循环次数已知的场合 首页 上页 下页 节 末页 结束 for i 999 i 100 i for i 1 i 9 i for j 1 j 9 j i 1时 j 1j 2 j 9 i 2时 要素 语句 嵌套 breakcontinue 题1每只公鸡5个钱 每只母鸡3个钱 每3只小鸡1个钱 用100个钱 买100只鸡 问公鸡 母鸡和小鸡各买几只 定义变量x y z 表示公鸡 母鸡和小鸡的只数 for x 1 x 100 x for y 1 y 100 y for z 1 z 100 z if 5 x 3 y z 3 100 x y z 100 程序运算100万次 首页 上页 下页 节 末页 结束 买100只鸡 100元钱 x最多为20 y最多为34 当x y已确定时 z的值为100 x y 不必对z进行循环 main intx y z for x 1 x 20 x for y 1 y 34 x y z 100 x y if 5 x 3 y z 3 100 printf d d d n x y z if 5 x 3 y z 3 100 首页 上页 下页 节 末页 结束 特点算法简单 容易理解 但运算量大 首页 上页 下页 节 末页 结束 题4 33编写程序求出555555的约数中最大的三位数是多少 1理解约数 n k 0则k是n的约数2最大数 从大到小循环 找到一个约数就退出循环 main inta for a 999 a 100 a 正确地表示三位数的范围 if 555555 a 0 如果555555能被a整除 break 结束循环 printf d a 题4 49一辆卡车违反交通规则 撞人逃跑了 现场三人目击 记下了车号特征 前两位数字相同 后两位数字相同 四位数恰好是一个整数的平方 求该车号 1将车号假定为aabb 是个四位数 a b的变化范围是1 92四位数的范围是1000 9999 某整数的平方是四位数3预估整数的范围 32的平方是1024 94的平方是8836 main intn a b for n 32 n 94 n n n是个四位数 for a 1 a 9 a a的范围 for b 1 b 9 b b的范围 if n n a 1000 a 100 b 10 b printf d d d d a a b b printf d n n 结果 774488的平方 题4 50口袋里放12个球 3个红球 3个白球和6个黑球 每次从中任取8个 求共有多少总颜色搭配 1找出各类球可能出现的范围红球x从1 3白球y从1 3黑球z个数不可能是1 因为总数必须是8 所以z从2 6 2定义一个整型变量做计数器 main intx y z k 0 for x 1 x 3 x 红球可能的范围 for y 1 y 3 y 白球可能的范围 for z 2 z 6 z 黑球可能的范围 if x y z 8 printf x d y d z d n x y z k 首页 上页 下页 节 末页 结束 题4 51100匹马驮100担货 大马一匹驮3担 中马一匹驮2担 小马两匹驮1担 求大 中 小马的数目 1定义三种数目为x y z 分析方法同100元钱买100只鸡2注意z能够被2整除 main intx y z for x 1 x 34 x 大马数目的范围 for y 1 y 50 y 中马数目的范围 z 100 x y 总数为100 z不循环 if 3 x 2 y z 2 100 共有100担货 首页 上页 下页 节 末页 结束 题4 52将一元钱换成一分 二分和五分的硬币 共有多少种换法 main inta b c k 0 for a 0 a 100 a 1分钱可能的个数 for b 0 b 50 b 2分钱可能的个数 for c 0 c 20 c 5分钱可能的个数 if a 2 b 5 c 100 总面值为1元 k printf d n k 定义变量a b c作为三种硬币的个数定义变量k作为计数器总的面值是100分 但总的硬币个数不是100个 首页 上页 下页 节 末页 结束 题4 53显示200以内的完全平方数和它们的个数A2 B2 C2 1理解题意 A2 B2和C2的值均不超过2002统计个数的方法 计数器 main inta b c k 0 for a 1 a a 200 a a的范围 for b 1 b b 200 b b的范围 for c 1 c c 200 c c的范围 if a a b b c c 完全平方数的特点 printf d d d n a b c k 计数器加1 首页 上页 下页 节 末页 结束 结果 3 4 54 3 55 12 136 8 108 6 1012 5 13 题4 54设n是一个四位数 它的9倍恰好是它的反序数 求n的值 如何表示四位数1定义四个变量a b c d作为该数各个位上的数字则a 1000 b 100 c 10 d为该数的大小例如 2134表示为2 1000 1 100 3 10 42定义一个变量n 则各个位分别为 个位 n 10十位 n 10 10百位 n 100 10千位 n 10003正确表示各个位上数字的范围 从1 9从0 9从0 9从1 9 为什么不是0 n的最高位不能是0 反序数的最高位也不可能是0 首页 上页 下页 节 末页 结束 main inta b c d for a 1 a 9 a a的范围 for b 0 b 9 b b的范围 for c 0 c 9 c c的范围 for d 1 d 9 d d的范围 if 9 a 1000 b 100 c 10 d d 1000 c 100 b 10 a printf d d d d n a b c d main intn for n 1000 n 9999 n n是一个四位数 if 9 n 1000 1000 n 100 10 100 n 10 10 10 n 10 n 10 1000 n 10 10 100 n 100 10 10 n 1000 Printf d n 比较两个程序 首页 上页 下页 节 末页 结束 结果 1089 题4 55一个数的等于它的反序数 则为对称数 求1993以内的最大二进制的对称数 1将十进制数转换成二进制 存入一个数组a 16 中2编一个函数 判断是否为对称数 返回为1或03求最大数 从大到小循环 找到一个就结束 用break main inti n k j a 16 0 for i 1993 i 1 i k i n 0 While k 0 a n k 2 k k 2 if fun a n 1 break printf d i for j 0 j n 1 j printf 3d a j fun intb intn intj k 1 for j 0 j n j if b j b n j 1 k 0 break returnk 结果 1975 1110110111 题4 56编写程序 求下式中各字母所代表的数字 1定义四个变量P E A R作为各个位上的数字则P 1000 E 100 A 10 R为该数的大小2注意各个变量变化的范围 main intp e a r for p 1 p 9 p p的范围 for e 0 e 9 e e的范围 for a 1 a 9 a a的范围 for r 0 r 9 r r的范围 if p 1000 e 100 a 10 r a 100 r 10 a p 100 e 10 a printf d d d d n p e a r 首页 上页 下页 节 末页 结束 结果 1098 题4 57一个自然数的七进制是一个三位数 其九进制也是一个三位数 且这两个三位数数码顺序正好相反 求这个三位数 1定义三个变量a b c作为各个位上的数字2注意七进制中的数字符号为0 6 因此a b c均不超过63非十进制数据的按权展开求和即为对应的十进制数 main inta b c for a 1 a 6 a a的范围 for b 0 b 6 b b的范围 for c 1 c 6 c c的范围 if a 7 7 b 7 c c 9 9 b 9 a printf d d d a b c 显示这三个数字 printf d a 7 7 b 7 c 显示这个三位数 首页 上页 下页 节 末页 结束 结果 七进制 503九进制 305十进制 248 题4 59编写程序求1000以内所有的阿姆斯特朗数 407 43 03 73 定义三个变量a b c作为各个位上的数字 main inta b c for a 1 a 9 a a的范围 for b 0 b 9 b b的范围 for c 0 c 9 c c的范围 if a 100 b 10 c a a a b b b c c c printf d d d a b c 显示这三个数字 printf d a 100 b 10 c 显示这个三位数 首页 上页 下页 节 末页 结束 main intn a b c for n 100 n 999 n n在所有的三位数中循环 a n 10 n的个位 b n 10 10 n的十位 c n 100 n的百位 if n a a a b b b c c c printf d n n 首页 上页 下页 节 末页 结束 结果 153370371407 题4 60任意输入一个偶数 将它分解成两个素数之和 main intj k n m scanf d 如何判断一个数是素数 题4 61如果整数A的因子之和是B 而且B的因子之和是A 则A与B是亲密数 找出3000以内的全部亲密数 1定义一个变量a在1 3000以内循环2若有 a i 0 则i为a的一个因子 找出a的全部因子3将a的因子求和 并赋值给m 重复2步骤 求m的因子之和n4判断a与n是否相等 main inta i m n for a 1 a 3000 a for m 0 i 1 i a 2 i if a i 0 m i a的因子和为m for n 0 i 1 i m 2 i if m i 0 n I m的因子和为n if a n 题4 69编写程序 输出1000以内的所有完数及其因子 例如 6 1 2 3 1定义变量i 从1 1000循环2将因子存进一个整形数组 求数组中各元素之和s3判断s与i是否相等 main inti j m s k a 20 for i 0 i0 for j 1 j m break If s 0 题4 82求一个三位数 该三位数等于每位数字的阶乘之和 1定义三个变量a b c作为各个位上的数字2调用一个阶乘函数 main inta b c for a 1 a 9 a a的范围 for b 0 b 9 b b的范围 for c 0 c 9 c c的范围 if a 100 b 10 c f a f b f c printf d a 100 b 10 c 显示这个三位数 f inta intk 0 t 1 while k a t k return t 首页 上页 下页 节 末页 结束 结果 145 教材6 26用40元钱买苹果 西瓜和梨共100个 3种水果
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论