结对开发五--最大子数组的和(大数溢出)

一、设计思路

  根据上一个实验,再让他自动生成1000个随机long型数。并且自己埋入炸弹,看是否有异常出错。

二、实验代码

 1 import java.util.*;
 2 class SuperMax3
 3 {
 4     public static void main(String[] args)
 5     {
 6         long[] list = new long[1000];//输入数组是必须先定义数组,否则出错!
 7         long[] arr1 = new long[1000];//输入数组是必须先定义数组,否则出错!
 8         System.out.println("请输入数组:");
 9         for(int k=0;k<1000;k++)
10         {
11             Random t=new Random();
12             list[k]=t.nextLong();
13             if(k==500)
14                 list[500]=(long)Math.pow(2,10000);
15         }
16         for(int n=0;n<999;n++)
17         {
18             arr1[n]=list[n];
19             for(int m=n;m<999;m++)
20             {
21                 arr1[m+1]=arr1[m]+list[m+1];
22             }
23             for(int m=n;m<1000;m++)
24             {
25                 if(arr1[m]>arr1[n])
26                 {
27                     arr1[n]=arr1[m];
28                 }
29             }
30             System.out.println("从第"+(n+1)+"个元素辐射的最大子数组的和为"+arr1[n]);
31         }
32         arr1[999]=list[999];
33         System.out.println("从第1000个元素辐射的最大子数组的和为"+arr1[999]);
34         for(int i=0;i<1000;i++)
35         {
36             if(arr1[i]>arr1[0])
37             {
38                 arr1[0]=arr1[i];
39             }
40         }
41         System.out.println("最大子数组的和为"+arr1[0]);
42     }
43 }

三、实验截图

四、心得体会

  这次试验虽然挺简单的,但是学到了一种思想,在以后的编程中,还得注意可能会出现的问题,就是不会出现问题,自己也可以为程序设置出错点,让自己更了解程序的运行机制,更加了解程序的内部运行。

五、有图有真相

时间: 2024-10-26 06:46:38

结对开发五--最大子数组的和(大数溢出)的相关文章

软件工程结对开发——一维最大子数组求和溢出问题

一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思路 将数组第一个和第二个数置为2的63次方,观察结果是否溢出. 三.源代码 1 package com.java.lianxi; 2 3 import java.util.Scanner; 4

结对开发五--对一千个数long型的一维数组求最大子数组的和

一.设计思想 我们根据第一个实验,再让他自动生成1000个随机long型数.大致思想和实验一一样,自己已埋入炸弹. 二.实验代码 package com.minirisoft; import java.util.*; class SuperMax { public static void main(String[] args) { long[] list = new long[1000];//输入数组是必须先定义数组,否则出错! long[] arr1 = new long[1000];//输入

结对开发四--首尾相连得数组的最大子数组的和

一.设计思路 根据上一个结对开发的基础上,将数组的首尾可以连接起来,组成一个首尾相联的数组,也就是说,每一个元素都能当作是数组的第一个元素, 因此,就可以根据有几个元素,就定义几个数组,让每一个元素都能成为元素的第一个元素,来得出每一个数组的最大子数组的和,那么怎么构造 每一个数组呢? 可以用冒泡交换,就是根据冒泡排序的原理,将数组的最后一个元素转移到数组的第一个元素的位置,然后就得到了目标数组,算出最大值. 二.源代码 1 import java.util.*; 2 public class

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

一.题目要求 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]开始,依次往后计算每个子数组的和,取出最大值.依次循

软件工程结对开发之求一个数组中连续最大子数组之和

一.团队成员: 檀威,陈志利 二.项目名: 求一个数组中连续最大子数组之和 三.我们的设计思路: 设sum[i]为以第i个元素结尾且和最大的连续子数组.对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且它们之和最大的连续子数组要么是以第i-1个元素结尾且它们之和最大的连续子数组加上这个元素,要么是只包含第i个元素,即sum[i] = max(sum[i-1] + arr[i], arr[i]).可以通过判断sum[i-1] + arr[i]是否大于arr[i]来做

3、软件工程结对开发之求一维数组中连续最大子数组之和并判断溢出

一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为O(n): 结果溢出之后能判断. 二.设计思想 在我们的前一个程序中,由于int类型rand()随机产生数范围是0~32767,所以产生的1000个数较小,不会产生溢出.但我们通过查资料得知int32最大数是2147

软件工程结对开发之求一维数组中连续最大子数组之和2

一.题目要求 题目:返回一个整数数组中最大子数组的和. 要求: 要求程序必须能处理1000 个元素: 每个元素是int32 类型的: 输入一个整形数组,数组里有正数也有负数: 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和: 求所有子数组的和的最大值.要求时间复杂度为O(n): 结果溢出之后能判断. 二.设计思想 在求最大连续子数组时同样用动态法,对于新增的要求,可以增大随机产生数的倍数,如果结果溢出则输出溢出提示字样,其中int类型rand()随机产生数范围是0~32767,i

5、软件工程结对开发之求一维数组中连续最大子数组之和

一.题目:返回一个二维整数数组中最大子数组的和.二.要求:输入一个二维整形数组,数组里有正数也有负数.二维数组首尾相接,象个一条首尾相接带子一样.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和.求所有子数组的和的最大值.要求时间复杂度为O(n). 三.设计思想 这个实验是在前几次实验的基础上,利用动态数组,为了满足首尾相连,所以在计算一次之后,要把该数放在数组的最后边,这样循环遍历最后求出最大子数组的和. 四.源代码 1 #include <iostream.h> 2 int

3月27号周五课堂练习:结对开发----返回一个整数数组中最大子数组的和三

一.题目要求 1.1输入一个整形数组,数组里有正数也有负数. 1.2数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 1.3如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n-1], A[0]……A[j-1]之和最大. 1.4同时返回最大子数组的位置. 1.5求所有子数组的和的最大值.要求时间复杂度为O(n). 二.设计思想 三.源代码 #include<iostream> #include<time.h> #include<conio