返回一个整数数组中最大子数组的和
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; }
总结:本次结对开发,基本顺利,遇到的基本问题通过合作商量解决,在解决困难中获得提升。
以上是关于返回一个整数数组中最大子数组的和的主要内容,如果未能解决你的问题,请参考以下文章