结对开发——返回一个整数数组中最大子数组的和
2015-03-18 18:20
363 查看
一、题目要求
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.比较所有子数组的和,得出最大值。
三、程序代码
四、实验结果截图
![](http://images.cnitblog.com/blog2015/726725/201503/181752482513411.x-png)
五、实验心得体会
本次程序中,求和取最大值用到了循环嵌套,时间复杂度要求没有达到。遇到问题时,分析每次循环所执行的代码,每次循环是否完成了目的。
这次结对开发,我负责程序分析,设计好思路,王雪青主要负责编写代码,过程中遇到了问题,我们两个共同解决。
六 工作照
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); } }
四、实验结果截图
五、实验心得体会
本次程序中,求和取最大值用到了循环嵌套,时间复杂度要求没有达到。遇到问题时,分析每次循环所执行的代码,每次循环是否完成了目的。
这次结对开发,我负责程序分析,设计好思路,王雪青主要负责编写代码,过程中遇到了问题,我们两个共同解决。
六 工作照
![](http://images.cnitblog.com/blog2015/726725/201503/191804446423959.jpg)
相关文章推荐
- 3月17号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和一
- 结对开发之返回一个整数数组中最大子数组的和
- 结对开发之《返回一个二维整数数组中最大子数组的和2》
- 结对开发-返回一个整数数组的最大子数组的和
- 3月24号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和二
- 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)
- 课堂练习之结对开发项目思想总结:返回一个整数数组中最大子数组的和
- 结对开发之《返回一个二维整数数组中最大子数组的和》
- 结对开发之返回一个二维整数数组中最大联通子数组的和
- 结对开发——返回一个整数数组中最大子数组的和
- 结对开发之《返回一个整数数组中最大子数组的和》
- 3月27号周五课堂练习:结对开发----返回一个整数数组中最大子数组的和三
- 结对开发-返回一个整数数组中最大子数组的和(首尾相接版)
- 结对开发之《返回一个整数数组中最大子数组的和》
- 结对开发之《返回一个二维整数数组中最大子数组的和》
- 结对开发——返回整数数组最大子数组和2
- 结对开发——返回整数数组最大子数组和
- 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)
- 返回一个整数数组中最大子数组的和
- 返回一个整数数组中最大子数组的和-课堂训练(子数组为连续)