软件工程个人作业04 - 整数数组中最大子数组和(第二版)

要求:
   输入一个一维整形数组,数组里有正数也有负数。
  一维数组首尾相接,象个一条首尾相接带子一样。
  数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。

设计思想:

  1 设传参的数组长为n,创建长度为2n的辅助数组,按顺序赋两遍值

  2 每一个以 i 开头的子数组有 n 个,也就是从 第 i 个到 n+i (i<=n)

  3 将得到的子数组求和并存起来,判断和数组中的最大值即可。

源代码:

import java.util.Vector;

public class MaxListNumber {
 public static int maxList(int []num) {
  int max=-99;
  int len=num.length;
  if(len<=0) {
   System.out.println("数组为空。");
  }
  else {
  Vector<Integer> numx=new Vector<>();
  int[]number=new int[2*len];
  for(int i=0;i<len;i++) {
   
   number[i]=num[i];
   System.out.println("数组元素:"+num[i]);
   number[len+i]=num[i];
  }
  for(int i=0;i<len;i++) {
   int temp;
   int sum=0;
   int count=0;
   for(int k=i;k<number.length;k++) {
    if(count>=len)
     break;
    temp=number[k];
    sum=sum+temp;
    numx.add(sum);
    count++;
   }
  }
  max=numx.get(0);
  for(int i=0;i<numx.size();i++) {
   if(max<numx.get(i)) {
    max=numx.get(i);
   }
  }
  }
  return max;
 }
 public static int maxList(int [][]num) {
  int max=num[0][0];
  for(int i=0;i<5;i++) {
   
  }
  return 0;
  
 }
 public static void main(String args[]) {

int []number=new int[6];
  for(int i=0;i<6;i++) {
   number[i]=(int) (Math.random()*10-5);
  }
  int max=maxList(number);
  System.out.println("最大子数组的和:"+max);
 }
}

结果截图

  

总结:

  以消耗空间来提高时间效率(降低时间复杂度)

时间: 2024-10-29 19:12:18

软件工程个人作业04 - 整数数组中最大子数组和(第二版)的相关文章

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

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

软件工程课堂练习:返回一个一维整数数组中最大子数组的和

题目:返回一个一维整数数组中最大子数组的和.要求:输入一个一维整形数组,数组里有正数也有负数.一维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值. 此次何琳琳负责程序分析,代码编程,张一博负责代码复审和代码测试计划. 经分析讨论设计思路如下: 1.定义一个长为20的数组,先对前10个数进行初始化,后10个数等于前10个数: 2.设置长度为10的循环依次以前十个数为头进行最大子数组的计算: 3,再设置一个数组用来存储

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

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

课堂练习----一个整数数组中最大子数组的和(2)

本次的题目是:返回一个整数数组中最大子数组的和 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]……A[j-1]首尾相邻,允许A[i-1],…… A[n-1],A[0]……A[j-1]之和最大. 同时返回最大子数组的位置. 求所有子数组的和的最大值. 分析: 这个题目是在上个题目的基础的加上数组首位相连,并该数组最大子数组的和,实现方法就是把环变成直线的方法,通过for循环,在每次循环中,把数组中的元素作为数组的

课堂练习----一个整数数组中最大子数组的和(1)

本次的题目是:返回一个整数数组中最大子数组的和 要求:1.输入一个整形数组,数组里有正数也有负数.2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.3.求所有子数组的和的最大值.要求时间复杂度为O(n) 分析: 当我们求出的累加和加上一个正数的时候,整个累加和就会增加,当我们的累加和加上一个负数的时候,整个累加和就会减小,我们用一个变量max保存累加和的最大值,另外,我们的累加和如果为负数的时候,如果继续加数不把累加和清零的话,那么整个和就会减小,因此如果累加和为负,就把累加和

软件工程结队开发——输出一个数组中最大子数组的和

一.题目及要求 题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整型数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为O(n): 二.设计思路 程序分成两个部分: (1):找到数组中所有可能的子数组的和: 先从数组中第一个数开始算起,一直求到与它连续的的所有数的和存入数组son,然后从第二个数开始算起,求与它连续的数的和存入数组,以此类推,直至计算到最后一个数.有n个数据的数组能产生的子数组个数为n

课后实验4--返回一个整数数组中最大子数组的和

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

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

题目:返回一个二维整数数组中最大子数组的和. 要求: 1 输入一个二维整形数组,数组里有正数也有负数. 2 二维数组首尾相接,象个一条首尾相接带子一样. 3 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 4 求所有子数组的和的最大值.要求时间复杂度为O(n). 设计思想 目前的解决方案是最笨的方法,穷举,所以时间复杂度达不到题目的要求,还需要进一步的寻找答案 源代码 题目:返回一个二维整数数组中最大子数组的和. 要求: 1 输入一个二维整形数组,数组里有正数也有负数. 2 二

返回一个首尾相接的二维整数数组中最大子数组的和

一.题目:返回一个二维整数数组中最大子数组的和. 二.要求: (1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组首尾相接,象个一条首尾相接带子一样. (3)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (4)求所有子数组的和的最大值. 三.解题思路: 将两个同样的数组首尾相接合并成一个数组,在用以前求二维数组最大子数组的方法求解 四.源代码: #include<iostream> using namespace std; #include"math

整数数组中最大子数组的和有溢出如何处理

一.实验题目: 返回一个整数数组中最大子数组的和. 二.实验要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 要求程序必须能处理1000 个元素:, 每个元素是int32 类型的: 求所有子数组的和的最大值. 三.实验思路: 这次的实验是在上次的基础上改进的,初看上去需要进步的地方不大,但是 仔细想起来,确实难度不小.处理1000个元素,很容易内存溢出:然后每 个元素是int32类型的,这很容易数据溢出.这次的实验着重的要解决这个