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

#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();
        }
        else
        {
            c[i]=-rand();
        }

printf("%d  ",c[i]);
    }
    for (i=0;i<1200;i++)
    {
        b+= c[i];
        if(b<0)
            b=0;
        if(b>max)
            max=b;
    }
    if(max==0)
    {
        max=c[0];
        for(i=0;i<1200;i++)
        {
            if(max<c[i])
            {
                max=c[i];
            }
        }
    }
    if(max>2147483647)
        printf("piease atart again\n");
    printf("\n");
    printf("maximum array is=%d\n",max);
    return 0;
}

设计思路:

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

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

任务分工:

何自强主要负责查资料编写代码

佟天宇主要负责代码复审和代码测试计划

实验结果截图:

并肩合作:

总结:

此次任务是第一次以小组合作的方式进行的,通过本次实验进一步掌握了随机函数的使用方法,并且复习了C语言的一部分知识,关于数组的定义方法和应用。在本次实验中,开始有许多错误,通过我们两个人不断地进行调整,最终圆满完成任务,增进了同学之间的友谊。

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

时间: 2024-10-23 04:07:25

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

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

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

软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)

题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为O(n): 一.设计思想 1.首先随机产生一个数组,数组长度可自行输入,该数组里有正数也有负数. 2.从数组中第一个元素a[0]开始,依次计算a[0].a[0]+a[1].a[0]+a[1]+...+a[i]的值,即从a[0]开始的每个子数组的和,取出最大值. 3.再从数组第二个元素a[1]开始,依

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

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

结对开发之《返回一个整数数组中最大子数组的和》

一.题目: 返回一个整数数组中最大子数组的和. 要求: 1.输入一个整形数组,数组里有正数也有负数. 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思路 1.定义一个大小为10的数组,接受任意十个自然正数: 2.分别将连续的一个数,两个数,......,组合成子数组,分别求出包含一个元素的数组的最大值,两个元素的,三个元素的,......,然后再比较这十组的值,求出最大值,即为所求: 3.单独判断一些特殊的

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

一:题目内容及设计思路 1.题目: 返回一个整数数组中最大数组的和 2.要求: (1)输入一个整数数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)求所有子数组的和的最大值.有球时间复杂度为O(n). 3.设计思路: (1)利用while循环输入各个整数,用getchar()函数判断while循环是否结束,当用户按下回车键时,即getchar()=='\n'时,跳出while循环: (2)记录下循环的次数,即数组长度: (3)调用函数Co

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

题目:返回一个整数数组中最大子数组的和 要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 在做前面一道题目时,并没有考虑数组个数的上限及随机数位数问题,以为是要程序不出错,就是完美的.而通过课堂上验证上次程序,发现数组的和超过某一值时,将不会显示,但同样,程序不会报错,在小程序中后果并不严重,但是一旦开发大型

结对开发之返回一个整数数组中最大子数组的和

一.题目: 返回一个整数数组中最大子数组的和. 二.要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: 两人结对完成编程任务. 一人主要负责程序分析,代码编程. 一人负责代码复审和代码测试计划. 发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照). 三.分工 我选择了领航员的角色,伙伴则是驾驶员职责: 一下是我们的工作照: 四.感想

返回一个整数数组中最大子数组的和。(二人结对编程)

 题目:返回一个整数数组中最大子数组的和. 要求: 1.要求程序必须能处理1000 个元素: 2.每个元素是int32 类型的,出现子数组之和大于整型表示的最大范围会出现什么情况: 3.输入一个整型数组,数组里有正数也有负数. 4.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 5.求所有子数组的和的最大值.要求时间复杂度为O(n).  设计思想:(1)将数组大小定义为n,用户输入p的值以确定该数组的长度,对于这n个元素用随机函数进行生成,每个元素定义为int32类型.(2)为

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

题目:返回一个整数数组中最大子数组的和. 要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 思路: 考虑到手动输入1000个元素所以在程序中由系统随机出1000个元素进行测试.代码与之前的代码差别不大. 程序代码: 1 #include <iostream.h> 2 #include<stdlib.h

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

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