返回一个整数数组中最大子数组的和

Posted tty123

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回一个整数数组中最大子数组的和相关的知识,希望对你有一定的参考价值。

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

成员:佟天宇, 负责代码测试

           陈雪彤,负责程序分析,代码编程

 

 

思路:1.对于现在的数组,先进性第一次比较,具体为先定义第一个数为最大值,后面的书依次与第一个相加并与最大值比较,求得最大值;

            2.然后把第一个数放到最后一个数后面,重复第一步的比较,求得最大值;

           3.循环第二步的步骤,直到第一个数与最开始的第一个数相同为止;

           4.得到最大值。

具体代码

#include"stdafx.h"
 #include "iostream"
 using namespace std;
 int main()
 {
     int length;//定义数组长度length
     int n;//定义变化后的数组的长度
     cout<<"请输入数组元素个数:"<<endl;
     cin>>length;
     n=2*length;
     int* a=new int[n];//初始化数组
     cout<<"请输入数组中的元素:"<<endl;
     for(int i=0;i<length;i++)
     {    
         cin>>a[i];
     }
     int max=a[0];
     int s=0;//定义求和后的元素
      for(int i=0;i<length;i++)
      {
         s=0;
         for(int j=i;j<length+i;j++)
         {
             s=s+a[j];
             if(s>max)
             {
                 max=s;
             }
         }
         a[length+i]=a[i];                                //每次将已经计算过的数放到最后
      }
      cout<<endl;
      cout<<"最大子数组的和为:"<<endl;
      cout<<max<<endl;
 
     return 0;
 }

 

技术分享图片技术分享图片

 

技术分享图片

 

总结:本次结对开发,基本顺利,遇到的基本问题通过合作商量解决,在解决困难中获得提升。

 






以上是关于返回一个整数数组中最大子数组的和的主要内容,如果未能解决你的问题,请参考以下文章

返回一个整数数组中最大子数组的和

返回一个整数数组中最大子数组的和

返回一个二维整数数组中最大子数组的和

返回一个整数数组中最大子数组的和

返回一个整数数组中最大子数组的和

返回一个整数数组中最大子数组的和