二分三分,就是将大规模的问题分解成几个较小规模的子问题,这些子问题与原问题相似,找出各部分的解,然后组合成整个问题的解。
分治的具体过程如下:
{
if(问题不可分)
返回问题解;
else
{
从原问题划出含一半运算对象的子问题1,2
递归调用二分过程,求解1;
递归调用二分过程,求解2;
}
}
做二分算法的题,首先要找到分割关系,就是某一个数据依据某种分割方案时,产生的效果随该分割方案是一种什么关系,如单调递增递减(二分),先增后减或先减后增(三分),而后就可以依据这种关系写出来递归函数,问题也就能够解决了。
九、树和图
树和图的问题感觉比较抽象,我在最后学的有些匆忙,也一直没来得及大量练习一下,感觉写不出什么认识理解,决定先把这部分跳过,等以后理解深一些了再写一写。