软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)
题目:返回一个整数数组中最大子数组的和。
要求: 输入一个整型数组,数组里有正数也有负数;
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和;
求所有子数组的和的最大值。要求时间复杂度为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)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果 ...
- 结对开发——返回一个整数数组中最大子数组的和
一.题目要求 1.输入一个整型数组,数组里有正数也有负数. 2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 ...
- 软工 课堂作业:选出一个整数组中最大子数组
项目计划日志 10.6 看ppt,熟悉内容. 10.6下午,开始编程调试. 10.7 运行调试,写博客. 时间记录日志 日期 开 ...
- 返回一个二维整数数组中最大子数组的和(二人结对)
题目:返回一个二维整数数组中最大子数组的和 要求:1.输入一个二维整型数组,数组里有正数也有负数. 2.二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. 3.求所有子数组的和的最大值. ...
- 返回一个整数数组中最大子数组的和---环形数组
一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]--A[j- ...
- 返回一个首尾相接的二维整数数组中最大子数组的和
题目: ·返回一个二维整数数组中最大子数组的和. 要求: ·输入一个二维整形数组,数组里有正数也有负数. ·二维数组首尾相接,象个一条首尾相接带子一样. ·数组中连续的一个或多个整数组成一个子数组,每 ...
- 返回一个整数数组中最大子数组的和。
一.要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果数组A[0]--A[j-1]首尾相邻,允许A[i-1],. ...
- 课堂练习:返回一个二维数组中最大子数组的和
1.题目: 返回一个二维数组中最大子数组的和. 2.要求: 输入一个二维整形数组,数组里有正数也有负数. 二维数组首尾相接,象个一条首尾相接带子一样. 数组中连续的一个或多个整数组成一个子数组,每个子 ...
- 求二维整数数组中最大子数组的和(结对作业)
题目:返回一个二维整数数组中最大子数组的和 要求:(1)输入一个二维整形数组,数组里有正数也有负数. (2)二维数组中连续的一个子矩阵组成一个子数组,每个子数组都有一个和. (3)求所有子数组的和最大 ...
最新文章
- 红外线接受程序 理解
- java五种加密技术理解
- 最全Pycharm教程(10)——Pycharm调试器总篇
- python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例
- 1.5编程基础之循环控制 21 角谷猜想
- System x借至强5500完成进化
- 通过rss阅读器写blog
- mysql组合索引与字段顺序
- 在职测试多年整理了自己常用的Linux命令...
- 理解mini-batch、Momentum、RMSpror、Admin优化算法
- 2010湖南省第六界程序设计大赛 B题 --弟弟的作业(nyoj663)
- 献给自己技术成长的第一年
- 适合程序员的耳机_没有最好的耳机,只有最适合你自己的耳机
- java安卓模拟器和电脑通信_PC电脑和Android模拟器访问及模拟器之间tcp/udp通信
- 6827台!中移动数据中心交换机采购结果公示 华为、中兴遭滑铁卢
- 租房管理系统 php,php出租房数据管理及搜索页面
- 华为员工利用Bug越权访问机密卖给第三方,获利1.6万元,被判有期徒刑一年
- 微信小游戏计算机算题,微信小程序学习:简易计算器
- ICPC Latin American Regional – 2017 B题(模拟+思维)
- [Linux入门系列].1.2.VMWare WorkStation和VMPlayer的安装