当前位置:文档之家› 用枚举法设计算法

用枚举法设计算法


h
8
当且仅当问题可能的解不太多时,才能用穷举法
h
2•
1.问题 一张标签上有一个5位数的编号,其千位数和百位数处
已经变得模糊不清,如右图。但知道这个5位数是57或67 的倍数。现在要设计一个算法,输出所有满足这些条件 的5位数,并统计这样的数的个数。
h3ຫໍສະໝຸດ 枚举法一个实例 复原一份数字被涂抹的单据的算法
其真正解n:能被57或67整除,若n是真正解,则输出n, 并在计数器c中计数。

计数器C计数; 输出真正解;
h

输出计数器C的值 结束
7
程序:
main() { int n,c,j; c=0; for (j=0;j<100;j=j+1) { n=10047+j*100;
If(n%57==0||n%67==0) {c=c+1; printf(“%d\n”,n);} }
Printf(“Count=%d\n”,c)
NO: 1??47
能填入的数: 00,01,02,…98,99
产能生的可解:10047,10147 …… 19947 (100个)
h
4•
用穷举法解决问题:
在算法中使用的变量:
c: 计数器,用于记录算法执行过程中已经找到的真正解的个数。
j: 本变量的作用如下: 依次产生应填在千位和百位上的数值(0到99)。
第三章 用枚举法设计算法
一、学习目的: 1、通过一个具体实例,理解什么是穷举法 2、如何利用穷举法解决问题 3、了解计数器的用法
h
1•
枚举法(也叫穷举算法):
就是按照问题的本身的性质,通过多重循环,一 一列出问题所有可能的解,然后检验每个可能的解是 否是问题的真正解,若是,采纳(输出)这个解,否 则放弃它。这种解决问题的算法
在重复处理过程中记录已经进行的重复的次数, 并用它来控制重复的次数;
n: 存储一个可能解。
表达式:n%57==o或n%67==0确定真正解
h
5
h
6
根据空举法用for()语句来实现找真解n及真解的个数c: 开始
计数器置C=0;
返回
J=0;
真 J<100?
n←10047+j*100; n正解吗?

J←j+1
相关主题