第二章算法初步本章归纳整合知识归纳专题一算法的含义及算法设计算法不同于一般意义上解决某个问题的方法,它是对一类问题的一般解法的抽象和概括,它要借助一般问题的解决方法,又要包含这类问题的所有可能情形.设计算法往往把问题的解法划分为若干个可执行的步骤,有些甚至重复多次,但必须在有限步之内完成.用自然语言描述算法,大体可分以下三步完成:第一步:明确问题的性质,分析题意,我们可将问题简单的分为数值型问题和非数值型问题,不同类型的问题可以有针对性地采用不同的方法进行处理.第二步:建立问题的描述模型.对于数值型问题,可以建立数学模型,通过数学语言来描述问题;对于非数值型问题,我们可以建立过程模型,通过过程模型来描述问题.第三步:设计确立算法.对于数值型问题,我们可以采用数值分析的方法进行处理,数值分析中有许多现成的固定算法,我们可以直接使用,当然我们可以根据问题的实际情况设计算法.对于非数值型问题,根据过程模型分析算法与设计算法,也可以选择一些成熟的办法进行处理,如排序、递推等.【例1】韩信是汉高祖刘邦部下的大将,他英勇善战,智谋超群,为建立汉朝立下了汗马功劳,据说他在点兵的时候,为了保住军事机密,不让敌人知道自己部队的实力,采用下述点兵的方法:先令士兵从1~3报数,结果最后一个士兵报2;再令士兵从1~5报数,结果最后一个士兵报3;又令士兵从1~7报数,结果最后一个士兵报4
这样,韩信很快就算出了自己部队士兵的总人数.请你设计一个算法,求出士兵至少有多少人
解第一步,首先确定最小的除以7余4的正整数:4
第二步,依次加7就得到所有除以7余4的正整数:4,11,18,25,32,39,46,53,60,…
第三步,在第二步得到的一列数中确定最小的除以5余3的正整数:18
第四步,然后依次加上35,得到18,53,88,…
第五步,在第四步得到的一列数中找出最小的满足除以3余2的正整数:5