分治算法
1、分治算法的定义
分治算法是游戏中比较常用的一种算法,“分治”二字顾名思义,就是“分而治之”的意思,说的通俗一点就是步步为营,各个击破,再来解释分而治之的意思,其实也就是把一个问题(一般来说这个问题都是比较复杂的)分成两个相同或者相似的子问题,再把子问题分成更小的问题,一直这样下去.......直到最后,子问题可以简单地求解,还有一点就是把所有求得的子问题合并就是原问题的解。其实在很多场合下都会使用到分治算法,比如说我们常用的归并排序、快速排序都是很常见的分治思想的体现。
2、分治法的解题步骤一般可以分为三步:
1、分解问题:将要解决的问题分开成若干个规模较小且又容易解决的与原问题同类的相互独立子问题。
2、解决问题:将子问题求解。
3、合并:按照原问题的要求,将解决了的子问题合并构成原问题的解。
例如:
最值得求取:
在n个元素中找出最大元素和最小元素。我们可以把这n个元素放在一个数组中,用直接比较法求出。算法如下:
void maxmin1(int A[],int n,int *max,int *min)
{
int i;
*min=*max=A[0];
for(i=0;i <= n;i++)
{
if(A[i]> *max) *max= A[i];