数组结对开发
2015-06-21 11:42
204 查看
题目:
返回一个整数数组中最大子数组的和。
要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
1. 设计思想
首先是用random产生随机数,可以产生政府混合,怎么求最大子数组,重点是2个思想:①在这个循环中,把前几个相加,看是否是正数。② 其次看(i+1)的和是否大于(i)的和。
根据这就可以用一个循环来进行计算。接下来就是考虑其他的问题,比如最大子数组的起始位置和最终位置。把这个加入到for循环中,用if条件语句进行判断。最后输出即可。
2. 出现问题以及解决方案
出现的问题就是数溢出,本来的想法是用递归调用,来调整输入的数,但是一直有bug,所以就采用了直接判断的方法。在主函数中直接用if条件语句。
3. 源代码
4. 运行截图
![](http://images0.cnblogs.com/blog2015/720475/201506/211140004661599.png)
5.合作感受:
第一次合作,感觉特别的难以搭配。效率还不如一个人高
6. 成员合作照片:
返回一个整数数组中最大子数组的和。
要求:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)。
1. 设计思想
首先是用random产生随机数,可以产生政府混合,怎么求最大子数组,重点是2个思想:①在这个循环中,把前几个相加,看是否是正数。② 其次看(i+1)的和是否大于(i)的和。
根据这就可以用一个循环来进行计算。接下来就是考虑其他的问题,比如最大子数组的起始位置和最终位置。把这个加入到for循环中,用if条件语句进行判断。最后输出即可。
2. 出现问题以及解决方案
出现的问题就是数溢出,本来的想法是用递归调用,来调整输入的数,但是一直有bug,所以就采用了直接判断的方法。在主函数中直接用if条件语句。
3. 源代码
import java.util.Random; import java.util.Scanner; public class main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int a[]=new int[1000000]; int sum,d,temp1=0,temp2=0,flag1=0,flag2=0; //分别记录子数列的起始和结束位置 System.out.print("请输入数组元素的个数: "); Scanner sc=new Scanner(System.in); int m=sc.nextInt(); if(m>999999) { System.out.print("请重新输入数组元素的个数: "); m=sc.nextInt(); } Random rand = new Random(); for(int i=0;i<m;i++)//循环为数组赋值 { a[i] = rand.nextInt(40)-20; System.out.print(a[i]+" "); } sum=a[0]; d=sum; for(int i=0;i<m;i++)//核心循环,来判断怎么产生最大子数组 { if(d<=0){ d=0; temp1=i+1; temp2=i; } d+=a[i+1]; temp2++; if(d>sum){ sum=d; flag1=temp1; flag2=temp2; } } System.out.println(""); System.out.print("子数组的组成元素为: "); for(int i=flag1;i<=flag2;i++) System.out.print(a[i]+" "); System.out.println(""); System.out.println("子数组和的最大值为: "+sum); } }
4. 运行截图
![](http://images0.cnblogs.com/blog2015/720475/201506/211140004661599.png)
5.合作感受:
第一次合作,感觉特别的难以搭配。效率还不如一个人高
6. 成员合作照片:
![](http://images0.cnblogs.com/blog2015/720475/201506/211140337959818.jpg)
相关文章推荐
- redis翻译_redis lua脚本
- 多态机制
- .pb.h:9:42: fatal error: google/protobuf/stubs/common.h: No such file or directory
- java基础之 异常
- Windows 10 Insider预览版免费升级正式版系统需是主系统
- 英语分词
- 动软代码生成器 常用函数
- params.equals(""),!params.isEmpty(),params!=null的区别
- 网络图片加载的第三方类:EGOImageView的使用方法及注意事项
- hibernate n+1问题
- robin 今日南
- Netty权威指南之Netty入门应用
- 内核驱动调试
- 如何开发Office平台上的扩展应用(又称为Office 2013 App,Office 2013 Add-Ins,Apps for Office,Office 应用)
- LeetCode | Sqrt (x)
- hdu 1690 构图后Floyd 数据很大
- swift runtime type
- 二进制转十进制快速方法
- Android NDK之环境配置及HelloJni
- 冒泡算法 SAS & Python