内容正文:
2.4.2基于枚举算法的问题解决
人教中图版(2019) 数据与计算
2.4 《常见算法的程序实现》
票据上有一个4位数字组成的编号:
甲说:数字编号的前两位数字相同,但都不是零;
乙说:数字编号的后两位数字是相同的,但与前 两位不同;
丙说:数字编号是一个整数的平方。
根据以上线索推断出编号。
票据中模糊数字推断问题:
人教中图版(2019) 数据与计算
2.4 《常见算法的程序实现》
已知条件 :
四个数字应是AABB,其中A≠0,A≠B,且AABB是一个整数的二次方
求解目标 : 票据中的数字
分析问题:
已知与未知的关系 :
要求解的4位数字的编号必须同时满足所有的已知条件
人教中图版(2019) 数据与计算
2.4 《常见算法的程序实现》
设计算法:
根据问题分析,只要一一列举出4位数字AABB中A与B的所有可能组合,保证A≠B 且A≠0.再验证二次方问题,就可以得到同题的解。因此,该问题可使用枚举算法求解完成
人教中图版(2019) 数据与计算
2.4 《常见算法的程序实现》
编程实现与调试:
import math
for A in range(1,10):
for B in range(0,10):
if A!=B:
k=A * 1000+A * 100+B * 10+B
c=int(math.sqrt(k))
if c*c==k:
print("票据编号是:",k)
人教中图版(2019) 数据与计算
2.4 《常见算法的程序实现》
枚举算法:
依据问题的已知条件,确定答案的大致范围,在此范围内列举出它所有可能情况的方法。
设计算法
编程实现与调试
分析问题
保存文件
适合解决求解的答案数量有限,并且可能的答案是能按照某种规则列举出来的问题。例如,用枚举法解决一些数学问题(“韩信点兵”“鸡兔同笼”等)、益智游戏和逻辑推理等。
人教中图版(2019) 数据与计算
2.4 《常见算法的程序实现》
分组探究:输出1000以内所有素数
素数是在大于1的自然数中,除了1和它本身以外不再有其他因数的数,如2,