题目:返回一个整数数组中最大子数组的和。

要求: 输入一个整型数组,数组里有正数也有负数;

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

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

一、设计思想

1.首先随机产生一个数组,数组长度可自行输入,该数组里有正数也有负数。

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

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

4.依次循环,循环num次,直到数组最后一个元素,将每次求得的最大值存到一个数组list[]中。

5.比较每次得出的子数组的和的最大值,再得出最大值。

二、源程序

 1 //作者:王雪青   陆宇
 2 //日期:2015年3月18日
 3 package com.java.lianxi;
 4
 5 import java.util.*;
 6 public class lianxi2
 7 {
 8     public static void main(String[] args)
 9     {
10         Scanner input=new Scanner(System.in);
11         System.out.print("请输入数组中数的个数:");
12         int num=input.nextInt();
13         int array[]=new int[num];
14         for(int i=0;i<num;i++)
15         {
16             if((int)(Math.random()*2)==0)
17             {
18                 array[i]=(int)(Math.random()*10);
19             }
20             else
21             {
22                 array[i]=-(int)(Math.random()*10);
23             }
24         }
25         for(int i=0;i<num;i++)
26         {
27             System.out.println(array[i]);
28         }
29         int max=0;
30         int list[]=new int[num];
31         for(int j=0;j<num;j++)
32         {
33             max=array[j];
34             int sum=0;
35             for(int t=j;t<num;t++)
36             {
37                 sum=sum+array[t];
38                 if(sum>max)
39                 {
40                     max=sum;
41                 }
42             }
43             list[j]=max;
44         }
45         for(int i=0;i<num;i++)
46         {
47             System.out.print("第"+(i+1)+"次比较的子数组的和的最大值为:");
48             System.out.println(list[i]);
49         }
50         for(int i=1;i<num;i++)
51         {
52             max=list[0];
53             if(list[i]>max)
54             {
55                 max=list[i];
56             }
57         }
58         System.out.print("子数组和的最大值为:"+max);
59     }
60 }
61     

三、运行结果截图:

四、心得体会和总结

  我们组的两个人是我王雪青和陆宇,这个题目的实现方法是陆宇想到的,然后程序是由我编写的,程序中的问题是我们两个一起解决的。这个程序基本实现了题目中的要求,但是时间复杂度不满足要求,今后我们会对这方面做改进,使程序更加完善。

转载于:https://www.cnblogs.com/maximumminimum/p/4347841.html

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

  1. 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)

    一.题目及题目要求 题目:返回一个整数数组中最大子数组的和. 要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果 ...

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

    一.题目要求 1.输入一个整型数组,数组里有正数也有负数. 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 ...

  3. 软工 课堂作业:选出一个整数组中最大子数组

    项目计划日志       10.6 看ppt,熟悉内容.       10.6下午,开始编程调试.       10.7 运行调试,写博客.                   时间记录日志 日期 开 ...

  4. 返回一个二维整数数组中最大子数组的和(二人结对)

    题目:返回一个二维整数数组中最大子数组的和 要求:1.输入一个二维整型数组,数组里有正数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值. ...

  5. 返回一个整数数组中最大子数组的和---环形数组

    一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]--A[j- ...

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

    题目: ·返回一个二维整数数组中最大子数组的和. 要求: ·输入一个二维整形数组,数组里有正数也有负数. ·二维数组首尾相接,象个一条首尾相接带子一样. ·数组中连续的一个或多个整数组成一个子数组,每 ...

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

    一.要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果数组A[0]--A[j-1]首尾相邻,允许A[i-1],. ...

  8. 课堂练习:返回一个二维数组中最大子数组的和

    1.题目: 返回一个二维数组中最大子数组的和. 2.要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子 ...

  9. 求二维整数数组中最大子数组的和(结对作业)

    题目:返回一个二维整数数组中最大子数组的和 要求:(1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. (3)求所有子数组的和最大 ...

最新文章

  1. 红外线接受程序 理解
  2. java五种加密技术理解
  3. 最全Pycharm教程(10)——Pycharm调试器总篇
  4. python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例
  5. 1.5编程基础之循环控制 21 角谷猜想
  6. System x借至强5500完成进化
  7. 通过rss阅读器写blog
  8. mysql组合索引与字段顺序
  9. 在职测试多年整理了自己常用的Linux命令...
  10. 理解mini-batch、Momentum、RMSpror、Admin优化算法
  11. 2010湖南省第六界程序设计大赛 B题 --弟弟的作业(nyoj663)
  12. 献给自己技术成长的第一年
  13. 适合程序员的耳机_没有最好的耳机,只有最适合你自己的耳机
  14. java安卓模拟器和电脑通信_PC电脑和Android模拟器访问及模拟器之间tcp/udp通信
  15. 6827台!中移动数据中心交换机采购结果公示 华为、中兴遭滑铁卢
  16. 租房管理系统 php,php出租房数据管理及搜索页面
  17. 华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年
  18. 微信小游戏计算机算题,微信小程序学习:简易计算器
  19. ICPC Latin American Regional – 2017 B题(模拟+思维)
  20. [Linux入门系列].1.2.VMWare WorkStation和VMPlayer的安装

热门文章

  1. PID和TID之间的区别
  2. 最近感冒恢复中,读了《平凡的世界》,写点感受。
  3. html中取颜色快捷键,ps中填充颜色的快捷键是什么?
  4. Appium+Python appium启动夜神模拟器定位元素(三)
  5. 格鲁夫给经理人的第一课
  6. 用vue2写的开发者在线简历导出
  7. 华为微型计算机,8英寸华为平板M5青春版今日发布
  8. 使用CRF++实现命名实体识别
  9. where 引导从句
  10. Office2016 64位安装包+只安装3件套