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

一、题目要求

1.输入一个整型数组,数组里有正数也有负数。

2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。

3.求所有子数组的和的最大值。要求时间复杂度为O(n)。

二、设计思想

1.首先随机产生一个数组,该数组里有正数也有负数。

2.从数组中第一个元素a[0]开始,依次计算a[0]、a[0]+a[1]、a[0]+a[1]+...+a[i]的值,即从a[0]开始的每个子数组的和,取出最大值。

3.再从数组第二个元素a[1]开始,依次往后计算每个子数组的和,取出最大值。依次循环,直到数组最后一个元素,取出a[i]。

4.比较所有子数组的和,得出最大值。

三、程序代码

//作者:王雪青   陆宇
//日期:2015年3月18日
package com.java.lianxi;

import java.util.*;
public class lianxi2
{
    public static void main(String[] args)
    {
        Scanner input=new Scanner(System.in);
        System.out.print("请输入数组中数的个数:");
        int num=input.nextInt();
        int array[]=new int[num];
        for(int i=0;i<num;i++)
        {
            if((int)(Math.random()*2)==0)
            {
                array[i]=(int)(Math.random()*10);
            }
            else
            {
                array[i]=-(int)(Math.random()*10);
            }
        }
        for(int i=0;i<num;i++)
        {
            System.out.println(array[i]);
        }
        int max=0;
        int list[]=new int[num];
        for(int j=0;j<num;j++)
        {
            max=array[j];
            int sum=0;
            for(int t=j;t<num;t++)
            {
                sum=sum+array[t];
                if(sum>max)
                {
                    max=sum;
                }
            }
            list[j]=max;
        }
        for(int i=0;i<num;i++)
        {
            System.out.print("第"+(i+1)+"次比较的子数组的和的最大值为:");
            System.out.println(list[i]);
        }
        for(int i=1;i<num;i++)
        {
            max=list[0];
            if(list[i]>max)
            {
                max=list[i];
            }
        }
        System.out.print("子数组和的最大值为:"+max);
    }
}

四、实验结果截图

五、实验心得体会

本次程序中,求和取最大值用到了循环嵌套,时间复杂度要求没有达到。遇到问题时,分析每次循环所执行的代码,每次循环是否完成了目的。

这次结对开发,我负责程序分析,设计好思路,王雪青主要负责编写代码,过程中遇到了问题,我们两个共同解决。

时间: 2024-10-03 22:47:21

结对开发——返回一个整数数组中最大子数组的和的相关文章

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

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

3月27号周五课堂练习:结对开发----返回一个整数数组中最大子数组的和三

一.题目要求 1.1输入一个整形数组,数组里有正数也有负数. 1.2数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.3如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 1.4同时返回最大子数组的位置. 1.5求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 三.源代码 #include<iostream> #include<time.h> #include<conio

3月24号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和二

一.题目要求 1.1要求程序必须能处理1000 个元素: 1.2每个元素是int32 类型的: 1.3输入一个整形数组,数组里有正数也有负数. 1.4数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.5求所有子数组的和的最大值.要求时间复杂度为O(n). 二.源代码 #include<iostream> #include<time.h> #include<conio.h> #define N 100000 using namespace std; v

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

日期&&任务 听课 编写程序 阅读相关书籍 网上查找资料   日总计 周一 100   10 30 140 周二   120   30 150 周三   30 10 10 50 周四 100 20     120 周五   120    30 150 周六   45 60 10 155 周日           周总计 200 335 80 110 765 时间记录日志 3/21 日期 开始时间 结束时间 中断时间 净时间 活动 备注 3/21 14:00 15:50 10 100 听课

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

#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

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

一.题目要求 题目:返回一个二维整数数组中最大子数组的和. 要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 结对编程要求: 两人结对完成编程任务. 一人主要负责程序分析,代码编程. 一人负责代码复审和代码测试计划.发表一篇博客文章讲述两人合作中的过程.体会以及如何解决冲突(附结对开发的工作照).(截止到周四4月9日24:00) 二.编程思路 我们的思路比较简单,采用的是将

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

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

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

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

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

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