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

    一、题目要求

    题目:返回一个整数数组中最大子数组的和。
    要求:
      输入一个整形数组,数组里有正数也有负数。
      数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
      如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大。
      同时返回最大子数组的位置。
      求所有子数组的和的最大值。要求时间复杂度为O(n)。 

    二、设计思想

    把数组每一位向后移动一位,最后一位放在第一位。循环多次,每次求其最大子数组,存放到新数组内,比较新数组中最大数,并输出。

    三、源代码

    #include <iostream.h>
    int Largest(int list[],int length)
    {
    
    	int n,max=list[0];/
    
    	for(n=0;n<=(length-1);n++)
    	{
    		if(list[n]>max)
    		{
    			max=list[n];
    		}
    	}
    	return max;
    }
    int MaxSum2(int *A, int n)
    {
        int nStart = A[n-1];
        int nAll = A[n-1];
        for(int i = n-2;i>=0;--i)
        {
            if(nStart<0)
                nStart = 0;
            nStart += A[i];
            if(nStart>=nAll)
            {
                nAll = nStart; 
            }
        }	
    	return nAll;
    }
    int main(void)
    {
    	int sum[5]={1,-2,-3,-4,5};
    	int sum2[15]={0};
    	int gg[5]={0};
    	int kk[5]={0};
    	int t;
    	for(int k=0;k<5;k++)
    	{
    		t=sum[4];
    		for(int j=3;j>=0;j--)
    		{sum[j+1]=sum[j];}
    		sum[0]=t;
    		gg[k]=MaxSum2(sum,5);		
    	}
    	cout<<Largest(gg,5)<<endl;
    }
    

      

    四、结果截图

    五、心得体会

    一个人意识不到的问题,另一个人如果是互补的,就会让问题很快的解决。

    凌晨00:08,睡觉去~~~

  • 相关阅读:
    sqlserver 库服务器导数据
    C# 关于X86/X64/AnyCpu 的关系
    VisualStudio相关序列号
    超级搜索术
    ffmypeg 视频处理类库使用方法
    远程桌面连接
    关于VS2013调试IIS应用源代码时无法进入断点的问题总结
    C#访问修饰符(public,private,protected,internal,sealed,abstract)
    MySQL结构相关
    性能瓶颈定位分析
  • 原文地址:https://www.cnblogs.com/zhaixing/p/4375100.html
Copyright © 2011-2022 走看看