数组最大子数组和
2013-11-21 14:18
169 查看
// maxofArray.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> using namespace std; #define N 11 int max_sub_array(int &s,int &e,int * a); int max_sub_array1(int &s,int &e,int * a); int max_sub_array2(int &s,int &e,int * a); int main() { int a ={31,-41,59,26,0,-53,58,97,-93,-23,84}; int start,end; int sum = max_sub_array1(start,end,a); cout << sum << " "<<start<< " "<<end<< endl; return 0; } int max_sub_array(int &s,int &e,int * a) { int i=0; int j,k =0; int b,start,end; int sum = 0; int max = a[0]; s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖà for(i = 0;i < N; i++) { for (j=i;j<N;j++){ for(k=i;k<=j;k++){ sum += a[k]; } if(sum > max){ max = sum; start = i; end =j; } sum=0; } } s = start; e= end; return max; } //½â·¨Ò»¸Ä½ø°æ£º //×Ðϸ×ÁÄ¥¾Í»á·¢ÏÖ£¬Æäʵ²»ÐèÒªÔÙʹÓÃkÈ¥±éÀú×ÓÊý×飬ÒòΪÿ´ÎjÒƶ¯¶¼»á²úÉúеÄ×ÓÊý×飬ËùÒÔÖ»ÒªÔÚÿ´ÎjÒƶ¯Ê±½øÐÐһϱȽϣ¬¾Í²»»á°Ñ×î´óֵ©µô¡£ËùÒÔÖ»ÓÐiºÍjÒƶ¯£¬¸´ÔӶȽµµÍµ½O£¨n^2£©¡£ //´úÂëÈçÏ£º int max_sub_array1(int &s,int &e,int * a) { int i=0; int j,k =0; int start,end; int sum = 0; int max = a[0]; s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖà for(i = 0;i < N; i++) { sum=0; for (j=i;j<N;j++){ sum+=a[j]; if(sum > max){ max = sum; start = i; end =j; } } } s = start; e= end; return max; } int max_sub_array2(int &s,int &e,int * a) { int i=0; int j =0; int b,start,end; int sum = 0; sum = b = a[0]; s = e = start = end = 0;//sºÍeÊÇÕû¸öÊý×éa[0~n]µÄ×î´ó×ӶεÄÆðĩλÖá£startºÍendÊÇÊý×éa[0~i]µÄÆðĩλÖᣠfor(i = 1;i<N;i++) { if(b>0) { b = b + a[i]; end = i; } else { b = a[i]; start = end = i; } if(sum<b) { sum = b; s = start; e = end; } } return sum; }
相关文章推荐
- 【剑指offer-解题系列(31)】 连续子数组的最大和
- 51nod 1270 数组的最大代价
- 连续子数组的最大和(最大连续子序列)
- 求数组的最大值,次大值
- 寻找一维数组int num[5]中最大、最小及其坐标位置并 打印输出。(数组值从键盘读取)
- 设计一个最优算法来查找一n个元素数组中的最大值和最小值。已知一种需要比较2n次的方法,请给一个更优的算法。
- 连续子数组的最大和
- 数组的连续最大子段和
- ] 找工作知识储备(2)---数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
- 求连续子数组的和最大
- 程序员面试题精选(03)-求子数组的最大和
- 结对开发之《返回一个整数数组中最大子数组的和》
- N个降序数组,找到最大的K个数
- c#获取数组中最大的元素
- Java 中一个int型数组的求最大值最小值
- 求给定数组中最大值和其在数组中的索引并输出
- 分治法查找数组最大最小值
- 环数组求最大子数组的和
- 求数组中和最大的一串数据
- DP 求子数组的最大和