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

#include<iostream>
using namespace std;
int max(int a,int b)
{
 if(a>b)
 {
return a;
}
else
{
 return b;
}
}
int maxsum(int a[],int n)
{
 int i;
int maxsofar=0;
int maxendinghere=0;
for (i=0;i<n;i++)
{
maxendinghere=max(maxendinghere+a[i],0);
maxsofar=max(maxsofar,maxendinghere);
}
return maxsofar;
}
int main()
{
int n,i=0;
cout<<"please enter number:";
cin>>n;
cout<<"please enter shuzu:";
int a[100000]={0};
for(i=0;i<n;i++)
{
cin>>a[i];
}
int max=maxsum(a,n) ;
cout<<"zui da zi shu zu de he wei:"<<max<<endl;
return 0;
}

设计思路:

我的做法就是从左面a0开始遍历整个数组,一直到最右面结束,在这个过程最大的子数组和maxsofar。maxsofar初始化为零然后再求a0

到ai之间的最大子数组的和。用到了maxending_i=max((manending_i-1)+a[i],0)

周泊辰主要负责查资料编写代码

陈岩主要负责代码复审和代码测试计划

#include<iostream>
using namespace std;
int max(int a,int b)
{
 if(a>b)
 {
return a;
}
else
{
 return b;
}
}
int maxsum(int a[],int n)
{
 int i;
int maxsofar=0;
int maxendinghere=0;
for (i=0;i<n;i++)
{
maxendinghere=max(maxendinghere+a[i],0);
maxsofar=max(maxsofar,maxendinghere);
}
return maxsofar;
}
int main()
{
int n,i=0;
cout<<"please enter number:";
cin>>n;
cout<<"please enter shuzu:";
int a[100000]={0};
for(i=0;i<n;i++)
{
cin>>a[i];
}
int max=maxsum(a,n) ;
cout<<"zui da zi shu zu de he wei:"<<max<<endl;
return 0;
}

设计思路:

我的做法就是从左面a0开始遍历整个数组,一直到最右面结束,在这个过程最大的子数组和maxsofar。maxsofar初始化为零然后再求a0

到ai之间的最大子数组的和。用到了maxending_i=max((manending_i-1)+a[i],0)

周泊辰主要负责查资料编写代码

陈岩主要负责代码复审和代码测试计划

#include<iostream>
using namespace std;
int max(int a,int b)
{
 if(a>b)
 {
return a;
}
else
{
 return b;
}
}
int maxsum(int a[],int n)
{
 int i;
int maxsofar=0;
int maxendinghere=0;
for (i=0;i<n;i++)
{
maxendinghere=max(maxendinghere+a[i],0);
maxsofar=max(maxsofar,maxendinghere);
}
return maxsofar;
}
int main()
{
int n,i=0;
cout<<"please enter number:";
cin>>n;
cout<<"please enter shuzu:";
int a[100000]={0};
for(i=0;i<n;i++)
{
cin>>a[i];
}
int max=maxsum(a,n) ;
cout<<"zui da zi shu zu de he wei:"<<max<<endl;
return 0;
}

设计思路:

我的做法就是从左面a0开始遍历整个数组,一直到最右面结束,在这个过程最大的子数组和maxsofar。maxsofar初始化为零然后再求a0

到ai之间的最大子数组的和。用到了maxending_i=max((manending_i-1)+a[i],0)

周泊辰主要负责查资料编写代码

陈岩主要负责代码复审和代码测试计划

总结

把所有的子数组都找出来并求出最大值那么程序代码就太多了,很麻烦,然后现在这个样子可以大大的节约时间,然后再一个是要思考数组的长度要能改变,然后上网查了好多别人的思路发现了好多有用的语句,借鉴学习,以后还要多看看c语言的教科书

原文地址:https://www.cnblogs.com/chenchen21/p/9786220.html

时间: 2024-10-25 20:20:56

返回一个整数组的最大子数组和的相关文章

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

题目:返回一个二维整数组中最大子数组的和 实验思路 根据老师上课给出的3*6的数据 我们决定设计一个3*6行的二维数组进行计算,依次进行比较 将最大子数组的和返回 代码 1 #include <iostream.h> 2 int main() 3 { 4 int a[3][6];//定义一个3*6的二维数组 5 int max; 6 int s;//求和 7 int count; 8 int b[3][7]; 9 cout<<"请输入二维数组(3*6)中的元素:"

求整数组环中最大子数组的和(升级版)

题目:返回一个整数数组中最大子数组的和 额外要求:让数组手尾相连,构成一个环,允许a[n],a[0]...这种形式.同时返回最大子数组的位置 设计思想:将环断开,成为一条线,分析这条线上的最大子数组,找到最大子数组,便可以找到最大子数组的起点和终点,然后将终点看作起点,将起点看作终点,将线连成环,在进行寻找最大子数组(寻找时不算上起点和终点),最后将先后找到的两个最大子数组连在一起就形成了这个整数组环的最大子数组,然后将记录的起点和终点输出出来,返回最大子数组的位置. 出现的问题:无法输入更多的

周泊辰和陈岩的返回一个整数组中的最大子数组的和

#include<iostream>using namespace std;int max(int a,int b){ if(a>b) {return a;}else{ return b;}}int maxsum(int a[],int n){ int i;int maxsofar=0;int maxendinghere=0;for (i=0;i<n;i++){maxendinghere=max(maxendinghere+a[i],0);maxsofar=max(maxsofar

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

#include<stdio.h>#include<stdlib.h>#include<time.h> int main(){    int i,d;    int max=0;    int b=0;    int c [1200];    srand(time(NULL));    for(i=0;i<1200;i++)    {        d=rand()%2;        if(d==0)        {            c[i]=rand(

课堂练习求环整数组中最大子数组之和

设计思路:之前还有一个课堂练习,是用户输入一个整数组,求其中最大子数组之和,我借鉴的其他同学的代码,仅在此基础上修改的.运用try,catch使得用户不必在输入数组之前输入数组的长度,但是需要一个除整数以外的数来结尾.一共使用了3个循环,运用一个循环得出每个数组中最大子数组之和的最大值,一个是用来计算最大子数组之和,最后一个用来实现数组的前移.第一个循环中包着另外两个循环.总的来说,是在之前课堂练习的基础上增加了将一个数组中的每个数做一次最前面的数,从中求出最大值. 程序代码: 1 import

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

#include<stdio.h>#include<stdlib.h>#include<time.h> int main(){    int i,d;    int max=0;    int b=0;    int c [1200];    srand(time(NULL));    for(i=0;i<1200;i++)    {        d=rand()%2;        if(d==0)        {            c[i]=rand(

返回一个整数数组中最大子数组的和(加强版)

题目:返回一个整数数组中最大子数组的和 要求:让数组手尾相连,构成一个环,同时返回最大子数组的位置 设计思想: 1.将环断开,成为一条线,分析这条线上的最大子数组,找到最大子数组,便可以找到最大子数组的起点和终点. 2.然后将终点看作起点,将起点看作终点,将线连成环,在进行寻找最大子数组(寻找时不算上起点和终点). 3.最后将先后找到的两个最大子数组连在一起就形成了这个整数组环的最大子数组,然后将记录的起点和终点输出出来,返回最大子数组的位置. 源代码: #include<iostream>

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

源程序: #include<iostream>#define n 100using namespace std;void main(){    int a[n], b[n][n]; int length, i, j, w = 0, p = 0, q = 0, temp, m;    cout << "输入随机整数" << endl;    for (length = 0;;)    {        cin >> a[length];  

软件工程课程作业(四)--返回一个整数数组中最大子数组的和

伙伴链接:http://www.cnblogs.com/haoying1994/ 一.设计思想 本实验要求输入一个正负数混合的整型数组,长度不限,在此数组的所有子数组中找到和最大的数组,并求出相应数组的和,且时间复杂度为O(n).我们在课堂上共同讨论了多种解决方案,这些将在下面可能的解决方案中展示,在听了同学的思路和老师的讲解之后, 我们最终选取了老师课堂上描述的比较简便的思路.如下: 在输入数组的环节,采用for无限循环加if判断截止,直到触发回车键为止,将数组记录到Array中,数组长度记录