分治思想是一种经典算法思想。为了时常可以回顾,这里记下我遇到的分治思想案例!本博文长期更新,欢迎交流!
1、农场主分割土地:
假设你是一个农场主,有一块小土地,1680*640那么大,你要将这块土地均匀的分成方块,要使分出的方块足够大,应该怎么分?
思路:分治的核心就是每次都把大问题变成一个个小问题,每次递归都缩小问题的规模,然后就是描述出解决问题的基线条件(较简单的描述)
此题的一种基线条件是分出更小的土地时一条边的长度是另一条边的整数倍,主函数的做法:从土地较短的那条边入手,画正方形,直到留下一块小土地,然后对小土地 判断 如果满足基线条件(一边是另一边的整数倍,则表示可以画出该倍数个小方块)则较短边即为最大的方块的边长,否则对这块小土地继续调用主函数,直到找到位置
本题数据:1680*640 => 400*640 => 240*400 => 240 *160 => 80*160(满足基线条件),从基线这里逆推,把之前大的方格全都可以化成80*80的小方格!
案例来源:《算法图解》