zoukankan      html  css  js  c++  java
  • 分治策略解决最大子数组问题

    分治策略的思路:

    1.将问题分解为一些子问题,其中有的子问题的形式与原问题相同,只是规模更小

    2.递归,求解使递归停止的边界条件

    3.合并

    对于最大子数组问题,

     1 #include <iostream>
     2 using std::cout;
     3 
     4 inline int max(int a,int b,int c){return a>b?(a>c?a:c):(b>c?b:c);}
     5 
     6 int foo(int *p,int len)
     7 {
     8     //递归边界
     9     if(1==len)return *p;
    10 
    11     //子问题1,求解数组以中点向两侧延伸情况下的最大值
    12     int save,i,leftval,rightval;
    13     save=leftval=p[len/2-1];
    14     rightval=p[len/2];
    15     for(i=len/2-2;i>=0;i--)
    16     {
    17         save+=p[i];
    18         if(save>leftval)leftval=save;
    19     }
    20     save=rightval;
    21     for(i=len/2+1;i<len;i++)
    22     {
    23         save+=p[i];
    24         if(save>rightval)rightval=save;
    25     }
    26     int v1=max(leftval,rightval,leftval+rightval);
    27 
    28     //递归求解出数组中点两侧分别的最大值
    29     int v2=foo(p,len/2);
    30     int v3=foo(p+len/2,len-len/2);
    31 
    32     //合并
    33     return max(v1,v2,v3);
    34 }
    35 
    36 
    37 int main()
    38 {
    39     int a[]={-1,2,5,4,-3,-1};
    40     cout<<foo(a,6)<<"
    ";
    41 
    42     return 0;
    43 }
  • 相关阅读:
    之所以菜鸟依旧
    单点登陆
    让entityframework.extend库同时支持mysql,sqlsever
    背包算法
    JS中实现继承
    Altium Designer 生成 Mach3 G代码的程序
    test博客嵌入pbi
    testPBI报表
    html中隐藏title属性方法
    Spring mvc 中有关 Shiro 1.2.3 配置问题
  • 原文地址:https://www.cnblogs.com/backinfile/p/5821647.html
Copyright © 2011-2022 走看看