最大连续子序列之和

原创 2017年01月03日 21:06:18

穷举法思路:

        1,-3,4,5最大子序列为4+5=9,

        4 -2 3 5 最大子序列为4+-2+3+5 = 10  

        穷举数列的每个区间,将区间内的数相加,更新最大值,每计算一个区间后求和的sum要清0

代码:

#include <stdio.h>
main()
{
	int n,i,j,k,max,sum=0,a[100];
	scanf("%d",&n);
	for (i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	max=a[0];
	for (i=0;i<n;i++)
        {
    	for (j=i;j<n;j++)
    	{
    		for (k=i;k<=j;k++)//k所在的范围是i和j之间元素
    		{
    			sum+=a[k];//sum为i和j之间元素之和 
    		}
    		if (sum>max) //一个连续的区间元素之和sum大于max就说明找到比之前还要大的,就取代max 
    		{
    			max=sum;
    		}
    	   sum=0;  //进入下次计算sum清0 
    	}
    }
    printf("%d",max);
}

非枚举思路:

      当输入的数全为负数时则输出最大的那个负数(负数再加来加去就会变小)。

      将序列按顺序加,只要sum不小于0,sum就一直加后面的元素,若sum>max后,就将sum值赋给max,若sum值不大于max则sum继续加后面的元素,

     若sum加后面元素后为负数,则让sum再从a[i]开始重新加知道大于max替换掉

  代码:

#include <stdio.h>
main()
{
    int n,a[100],i,j=0,max=-1000000000,sum=0,flag=0;
	scanf("%d",&n);
	for (i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
    }
    for (i=0;i<n;i++)
    {
    	if (a[i]>0)
    	{
		  flag=1; //数组不全是负数,则标记并退出 
		  break; 
	    }	
		else
		  {
		  	if (max<a[i]) //假如是负数,则记录最大的负数 
		  	  max=a[i];
		  }  		 
    } 
    if (flag)
    for (i=0;i<n;i++)
    {
    	if (sum<0)
          sum=a[i]; //sum<0让a[i]的值取代sum
	else
           sum+=a[i]; //求和
	if(sum>max)  //sum只有大于之前的max值才能取代max
	   max=sum;    
    }
    printf("%d ",max);
}



版权声明:

ACderem之循环数列的最大连续子序列和

Problem Description 娜娜好不容易才在你的帮助下"跳"过了这个湖,果然车到山前必有路,大战之后必有回复,大难不死,必有后福!现在在娜娜面前的就是好多好多的糖果还有一些黑不溜秋的...

求“最大连续段和”题目分析

一、题目说明给出一段长度为n的数列,要求从中找出连续的一段来使得总和最大。输入包含两行,第1行表示数列长度为N(N...
  • KSkun
  • KSkun
  • 2016年12月06日 17:55
  • 345

c语言典例之求n个整数最大连续子序列和

C语言求最大连续子序列和 问题描述 输入:具有n个数的序列x 输出:输入序列x的任何连续子序列中的最大和 解题思路:列出所有子序列,并求出它们的和,找出其中的最大者 int main() { int...

六种姿势拿下连续子序列最大和问题,附伪代码(以HDU 1003 1231为例)

问题描述:       连续子序列最大和,其实就是求一个序列中连续的子序列中元素和最大的那个。       比如例如给定序列:            { -2, 11, -4, 13, -5, -2...
  • hcbbt
  • hcbbt
  • 2013年08月28日 21:13
  • 15988

连续子序列和最大问题

给定一整型数列{a1,a2...,an},找出连续非空子串{ax,ax+1,...,ay},使得该子序列的和最大,其中,1 输入  第一行是一个整数N(N 每组测试数据的第一行是一个整数n表示序...

最大连续子序列和:动态规划经典题目(2)

问题描述:       连续子序列最大和,其实就是求一个序列中连续的子序列中元素和最大的那个。       比如例如给定序列:            { -2, 11, -4, 13, -5,...

递归方法解决最大连续子数列问题

最大连续子数列 最大连续子数列问题是给定一组数字,求出这组数字中的某一段连续数字中的最大值。例如:0,-1,3,-2,5,1;这组数字中的最大连续子数列是3+(-2)+5+1=7 用递归方法解决连续子...

最大子序列求和问题

最大子序列求和问题 题目: 给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 输入格式...
  • hephec
  • hephec
  • 2015年01月01日 22:04
  • 589

最大连续子序列求和详解

Maximum Continuous Subsequence Sum 最大连续子序列求和详解 1.        问题描述 输入一个整数序列(浮点数序列也适合本处讲的算法),求出其中连续子序列求...

六种姿势拿下连续子序列最大和问题,附伪代码(以HDU 1003 1231为例)

原文: http://blog.csdn.net/hcbbt/article/details/10454947 问题描述:       连续子序列最大和,其实就是求一个序列中连续的子序列中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:最大连续子序列之和
举报原因:
原因补充:

(最多只允许输入30个字)