结对开发之《返回一个整数数组中最大子数组的和》
2015-03-19 19:36
253 查看
一、题目:
返回一个整数数组中最大子数组的和。
要求:
1.输入一个整形数组,数组里有正数也有负数。
2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
3.求所有子数组的和的最大值。要求时间复杂度为O(n)。
二、设计思路
1.定义一个大小为10的数组,接受任意十个自然正数;
2.分别将连续的一个数,两个数,......,组合成子数组,分别求出包含一个元素的数组的最大值,两个元素的,三个元素的,......,然后再比较这十组的值,求出最大值,即为所求;
3.单独判断一些特殊的容易计算的情况,比如全是负数、全是正数、只有一个正数。这样能有效地提高程序的效率。;
三、源代码
四、结果截图
(既有正数又有负数)
(全正数)
(全负数)
五、心得体会
在这次实验中,尝试和同学组队做实验,感觉还不错。好处是可以互相能借鉴对方的想法和思路,
自己不注意的地方可能对方就注意到了,也能提高效率,但是缺陷就是每个人都有自己的思路,这样会在写代码的过程中比较耽搁时间,
但是总体来说,还是效率比较高的,在以后的练习中还应该多加练习组队练习,毕竟在今后的工作中还是以团队为整体工作,
经常的练习还是会有很好的提高的。
六、工作照(成员:杨广鑫,郭健豪)
返回一个整数数组中最大子数组的和。
要求:
1.输入一个整形数组,数组里有正数也有负数。
2.数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
3.求所有子数组的和的最大值。要求时间复杂度为O(n)。
二、设计思路
1.定义一个大小为10的数组,接受任意十个自然正数;
2.分别将连续的一个数,两个数,......,组合成子数组,分别求出包含一个元素的数组的最大值,两个元素的,三个元素的,......,然后再比较这十组的值,求出最大值,即为所求;
3.单独判断一些特殊的容易计算的情况,比如全是负数、全是正数、只有一个正数。这样能有效地提高程序的效率。;
三、源代码
import java.util.*; class SuperMax { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int[] list = new int[10];//输入数组是必须先定义数组,否则出错! int[] arr1 = new int[9];//输入数组是必须先定义数组,否则出错! int[] arr2 = new int[8];//输入数组是必须先定义数组,否则出错! int[] arr3 = new int[7];//输入数组是必须先定义数组,否则出错! int[] arr4 = new int[6];//输入数组是必须先定义数组,否则出错! int[] arr5 = new int[5];//输入数组是必须先定义数组,否则出错! int[] arr6 = new int[4];//输入数组是必须先定义数组,否则出错! int[] arr7 = new int[3];//输入数组是必须先定义数组,否则出错! int[] arr8 = new int[2];//输入数组是必须先定义数组,否则出错! int[] ma = new int[10];//输入数组是必须先定义数组,否则出错! int i=0,sum = 0; System.out.println("请输入数组:"); for(int k=0;k<10;k++) { list[k]=sc.nextInt(); } int max=list[0]; for(i=0;i<10;i++) { if(list[i]>max) { max=list[i]; } } ma[0] = max; System.out.println("有1个元素最大子数组的和为"+ma[0]); for(i=0;i<9;i++) { arr1[i] = list[i]+list[i+1]; } int max1=arr1[0]; for(i=0;i<9;i++) { if(arr1[i]>max1) { max1=arr1[i]; } } ma[1]=max1; System.out.println("有2个元素最大子数组的和为"+ma[1]); for(i=0;i<8;i++) { arr2[i] = list[i]+list[i+1]+list[i+2]; } int max2=arr2[0]; for(i=0;i<8;i++) { if(arr2[i]>max2) { max2=arr2[i]; } } ma[2]=max2; System.out.println("有3个元素最大子数组的和为"+ma[2]); for(i=0;i<7;i++) { arr3[i] = list[i]+list[i+1]+list[i+2]+list[i+3]; } int max3=arr3[0]; for(i=0;i<7;i++) { if(arr3[i]>max3) { max3=arr3[i]; } } ma[3] = max3; System.out.println("有4个元素最大子数组的和为"+ma[3]); for(i=0;i<6;i++) { arr4[i] = list[i]+list[i+1]+list[i+2]+list[i+3]+list[i+4]; } int max4=arr4[0]; for(i=0;i<6;i++) { if(arr4[i]>max4) { max4=arr4[i]; } } ma[4] = max4; System.out.println("有5个元素最大子数组的和为"+ma[4]); for(i=0;i<5;i++) { arr5[i] = list[i]+list[i+1]+list[i+2]+list[i+3]+list[i+4]+list[i+5]; } int max5=arr5[0]; for(i=0;i<5;i++) { if(arr5[i]>max5) { max5=arr5[i]; } } ma[5] = max5; System.out.println("有6个元素最大子数组的和为"+ma[5]); for(i=0;i<4;i++) { arr6[i] = list[i]+list[i+1]+list[i+2]+list[i+3]+list[i+4]+list[i+5]+list[i+6]; } int max6=arr6[0]; for(i=0;i<4;i++) { if(arr6[i]>max6) { max6=arr6[i]; } } ma[6] = max6; System.out.println("有7个元素最大子数组的和为"+ma[6]); for(i=0;i<3;i++) { arr7[i] = list[i]+list[i+1]+list[i+2]+list[i+3]+list[i+4]+list[i+5]+list[i+6]+list[i+7]; } int max7=arr7[0]; for(i=0;i<3;i++) { if(arr7[i]>max7) { max7=arr7[i]; } } ma[7] = max7; System.out.println("有8个元素最大子数组的和为"+ma[7]); for(i=0;i<2;i++) { arr8[i] = list[i]+list[i+1]+list[i+2]+list[i+3]+list[i+4]+list[i+5]+list[i+6]+list[i+7]+list[i+8]; } int max8=arr7[0]; for(i=0;i<2;i++) { if(arr8[i]>max8) { max8=arr8[i]; } } ma[8] = max8; System.out.println("有9个元素最大子数组的和为"+ma[8]); for(i=0;i<10;i++) { sum = sum+list[i]; } ma[9] = sum; System.out.println("有10个元素最大子数组的和为"+ma[9]); int max9=ma[0]; for(i=0;i<10;i++) { if(ma[i]>max9) { max9=ma[i]; } } System.out.println("最大子数组的和为"+max9); } }
四、结果截图
(既有正数又有负数)
(全正数)
(全负数)
五、心得体会
在这次实验中,尝试和同学组队做实验,感觉还不错。好处是可以互相能借鉴对方的想法和思路,
自己不注意的地方可能对方就注意到了,也能提高效率,但是缺陷就是每个人都有自己的思路,这样会在写代码的过程中比较耽搁时间,
但是总体来说,还是效率比较高的,在以后的练习中还应该多加练习组队练习,毕竟在今后的工作中还是以团队为整体工作,
经常的练习还是会有很好的提高的。
六、工作照(成员:杨广鑫,郭健豪)
相关文章推荐
- 结对开发-返回一个整数数组的最大子数组的和
- 结对开发之返回一个整数数组中最大子数组的和
- 结对开发之《返回一个二维整数数组中最大子数组的和2》
- 3月17号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和一
- 3月24号周二课堂练习:结对开发----返回一个整数数组中最大子数组的和二
- 结对开发——返回一个整数数组中最大子数组的和 (首尾相接版)
- 课堂练习之结对开发项目思想总结:返回一个整数数组中最大子数组的和
- 结对开发之《返回一个二维整数数组中最大子数组的和》
- 结对开发——返回一个整数数组中最大子数组的和
- 结对开发——返回一个整数数组中最大子数组的和
- 3月27号周五课堂练习:结对开发----返回一个整数数组中最大子数组的和三
- 结对开发-返回一个整数数组中最大子数组的和(首尾相接版)
- 结对开发之《返回一个整数数组中最大子数组的和》
- 结对开发之返回一个二维整数数组中最大联通子数组的和
- 结对开发之《返回一个二维整数数组中最大子数组的和》
- 结对开发——返回整数数组最大子数组和
- 结对开发——返回整数数组最大子数组和2
- 软件工程结对开发——返回一个整数数组中最大子数组的和(JAVA)
- 返回一个整数数组中最大子数组的和
- 返回一个整数数组中最大子数组的和-课堂训练(子数组为连续)