您的位置:首页 > 其它

自顶向下,逐步求精

2017-11-28 17:06 525 查看
一、基本概念

   在计算机科学中,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。



二、基本思想及策略

   分治法的设计思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

   分治策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。






三、基本步骤

    step1 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;

    step2 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题

    step3 合并:将各个子问题的解合并为原问题的解。
四.洗衣机例子

1.用户输入参数(水位和洗衣的模式)

2.当关闭洗衣机门后进行灌水,直到指定的水位停止。

3.根据用户所输入的洗衣模式来控制洗衣的时间,以及转动的速度

4.当时间到后,打开排水开关,直到水排干后进入脱水模式

5.脱水模式进行至指定的时间。

伪代码:

scanf(水位,洗衣模式)

while(当前水位<指定水位)

加水;

while(运行时间<指定洗衣模式时间)

洗衣机来回转动;

while(水位=0)

进入脱水模式;

while(脱水时间=指定时间)

exit;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: