zoukankan      html  css  js  c++  java
  • 数组最大子数组和

      1 // maxofArray.cpp : Defines the entry point for the console application.
      2 //
      3 
      4 #include "stdafx.h"
      5 #include <iostream>
      6 using namespace std;
      7 #define N 11 
      8 int max_sub_array(int &s,int &e,int * a);
      9 int max_sub_array1(int &s,int &e,int * a);
     10 int max_sub_array2(int &s,int &e,int * a);
     11 int main()
     12 {
     13     int a[N]={31,-41,59,26,0,-53,58,97,-93,-23,84};
     14     int start,end;
     15     int sum = max_sub_array1(start,end,a);
     16     cout << sum << "  "<<start<< " "<<end<< endl;
     17     return 0;
     18 }
     19 int max_sub_array(int &s,int &e,int * a)
     20 {
     21     int i=0;
     22     int j,k =0;
     23     int b,start,end;
     24     int sum = 0;
     25     int max = a[0];
     26     s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖÃ
     27     for(i = 0;i < N; i++)
     28     {
     29         
     30         for (j=i;j<N;j++){        
     31             for(k=i;k<=j;k++){
     32                 sum += a[k];
     33             }
     34             if(sum > max){
     35                 max = sum;
     36                 start = i;
     37                 end =j;
     38             }
     39             sum=0;
     40         }
     41     }
     42     s = start;
     43     e= end;
     44     return max;
     45 }
     46 //½â·¨Ò»¸Ä½ø°æ£º
     47 //×Ðϸ×ÁÄ¥¾Í»á·¢ÏÖ£¬Æäʵ²»ÐèÒªÔÙʹÓÃkÈ¥±éÀú×ÓÊý×飬ÒòΪÿ´ÎjÒƶ¯¶¼»á²úÉúеÄ×ÓÊý×飬ËùÒÔÖ»ÒªÔÚÿ´ÎjÒƶ¯Ê±½øÐÐһϱȽϣ¬¾Í²»»á°Ñ×î´óֵ©µô¡£ËùÒÔÖ»ÓÐiºÍjÒƶ¯£¬¸´ÔӶȽµµÍµ½O£¨n^2£©¡£
     48 //´úÂëÈçÏ£º
     49 int max_sub_array1(int &s,int &e,int * a)
     50 {
     51     int i=0;
     52     int j,k =0;
     53     int start,end;
     54     int sum = 0;
     55     int max = a[0];
     56     s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖÃ
     57     for(i = 0;i < N; i++)
     58     {
     59         sum=0;
     60         for (j=i;j<N;j++){        
     61             sum+=a[j];
     62             if(sum > max){
     63                 max = sum;
     64                 start = i;
     65                 end =j;
     66             }
     67         }
     68     }
     69     s = start;
     70     e= end;
     71     return max;
     72 }
     73 int max_sub_array2(int &s,int &e,int * a)
     74 {
     75     int i=0;
     76     int j =0;
     77     int b,start,end;
     78     int sum = 0;
     79     sum = b = a[0];
     80     s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖá£
     81     for(i = 1;i<N;i++)
     82     {
     83         if(b>0)
     84         {
     85             b = b + a[i];
     86             end = i;
     87         }
     88         else
     89         {
     90             b = a[i];
     91             start = end = i;
     92         }
     93         if(sum<b)
     94         {
     95             sum = b;
     96             s = start;
     97             e = end;
     98         }
     99     }
    100     return sum;
    101 }
  • 相关阅读:
    当事人在土地征收补偿纠纷中需要收集的证据
    ExtJs学习
    谈谈对于企业级系统架构的理解 转来的
    log4net详细配置 转
    基于RBAC的权限设计3
    当事人在土地征收补偿纠纷中需要收集的证据类型
    权限管理设计2
    SQL 字符串分割
    RBAC原理介绍及kasai使用分析
    权限管理设计1
  • 原文地址:https://www.cnblogs.com/fengjian/p/3435490.html
Copyright © 2011-2022 走看看