一、基本概念
在计算机科学中,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。
二、基本思想及策略
分治法的设计思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。
分治策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。
三、基本步骤
step1 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;
step2 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题
step3 合并:将各个子问题的解合并为原问题的解。
四.洗衣机例子
1.用户输入参数(水位和洗衣的模式)
2.当关闭洗衣机门后进行灌水,直到指定的水位停止。
3.根据用户所输入的洗衣模式来控制洗衣的时间,以及转动的速度
4.当时间到后,打开排水开关,直到水排干后进入脱水模式
5.脱水模式进行至指定的时间。
伪代码:
scanf(水位,洗衣模式)
while(当前水位<指定水位)
加水;
while(运行时间<指定洗衣模式时间)
洗衣机来回转动;
while(水位=0)
进入脱水模式;
while(脱水时间=指定时间)
exit;