码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-11-04 19:37:22      阅读:237      评论:0      收藏:0      [点我收藏+]

标签:++   turn   开发   分享图片   inf   数组元素   9.png   width   for   

要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
如果数组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;
 }

 

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

 

技术分享图片

 

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

 

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

标签:++   turn   开发   分享图片   inf   数组元素   9.png   width   for   

原文地址:https://www.cnblogs.com/tty123/p/9904678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!