内容正文:
第六课
韩信点兵枚举法的实现
目录
1.韩信点兵枚举法。
2.枚举法的例子。
韩信点兵枚举法
01
韩信在点兵的时候,为了知道有多少名士兵,同时又能保住军事机密,便让士兵排队报数。 按从1至5报数,最末一个士兵报的数为1。 再按从1至6报数,最末一个士兵报的数为5。 再按1至7报数,最末一个士兵报的数为4。 最后按1至11报数,最末一个士兵报的数为10。 你知道韩信至少有多少名士兵?
4
思路:
设原来有x名士兵,根据报数的情况可以得到,
x%5=1,
x%6=5,
x% =4,
x%11 =10,
并且这几个情况需要同时满足。
由此可以得出结果x。
代码
结果
1.2倍
8
系列 1
类别 1 类别 2 类别 3 类别 4 类别 5 3 4 6 3 4
枚举法的例子
02
枚举算法概念
枚举的策略是直接基于计算机特点而使用的思维方法,在一时找不到解决问题的更好途径 (指从数学上找到求解公式或规则)时,可以根据问题中的部分条件(约束条件)将可能解的情况列举出来,然后一一验证是否符合整个问题的求解要求。
例1 勾股数
[问题描述]
设三个正整数a、b、c,满足
则称abc为一组勾股数。求所有 G<=N 的勾股数(N <1000)
11
30%
60%
80%
例2直尺刻度
[问题描述]
一长29厘米的尺子,只允许在上面刻7个刻度,就能用它直接量出1~29厘米的长度。求这7个刻度的位置。
12
直尺刻度问题分析
从 1~29 厘米中选择七个刻度的所有可能情况数是:
C (29,7) = (29*28*27*26*25*24*23) 1(1*2*3*4*5*6*7)
=1560780
13
作业1
14
作业2
15
感谢聆听
$$