课堂练习(返回一个整数数组中最大子数组的和),整数数组
1.设计思想
只用一个主函数即可完成。
首先,定义一个整型数组,让用户输入一组整数。
然后,判断这一组数的正负还有零的情况。
最后,根据判断出来的情况进行选择执行 if 语句,情况分别为全为0,负数和0,正数和0还有正数负数和0。
2.源代码
1 /*
2 * For the maximum of the subarray of an integer array3 * The start time 2016/4/8 16:504 * The end of time 2016/4/8 18:305 * Author Jing6 */
7 packagearraymax;8 import java.util.*;9 public classSumArray {10
11 public static voidmain(String[] args) {12
13 Scanner sca=newScanner(System.in);14 System.out.println("输入整数数组数的个数");15 int num=sca.nextInt();16
17 int a[]=new int[num],b[]=new int[num];18 inti;19 System.out.println("输入此组整数数组");20 for(i=0;i
26 {27 if(a[i]>=0)28 {29 j++;30 }31 if(a[i]<0)32 {33 k++;34 }35 if(a[i]==0)36 {37 l++;38 }39 }40 if(k==num)//全为负数
41 {42 max=a[0];43 for(i=1;i
53 {54 System.out.println("最大子数组和为 0");55 }56 else if(j==num)//全为非负数
57 {58 for(i=0;i
65 {66 for(i=0;i=0&&a[i+1]>=0)69 {70 a[i+1]=a[i]+a[i+1];71 a[i]=0;72 }73 if(a[i]<0&&a[i+1]<0)74 {75 a[i+1]=a[i]+a[i+1];76 a[i]=0;77 }78 }79 k=0;80 j=0;81 while(k
82 {83 if(a[k]!=0)84 {85 b[j]=a[k];86 j++;87 }88 k++;89 }90 if(b[0]<0) //寻找第一个正数的下标
91 {92 i=1;93 }94 else
95 {96 i=0;97 }98 while(i
99 {100 if(b[i]>(-b[i+1]) && (-b[i+1])
108 {109 i=i+2;110 }111 }112 max=b[0];113 for(i=1;i
The Main Code
3.结果截图
4.编程总结
由于时间问题,此程序编的有些仓促,还有很多不足之处,以及需要优化的地方。在空余时间里,我再继续思考,争取编出一个最起码自己满意的程序。
http://www.dengb.com/Javabc/1117916.htmlwww.dengb.comtruehttp://www.dengb.com/Javabc/1117916.htmlTechArticle课堂练习(返回一个整数数组中最大子数组的和),整数数组 1.设计思想 只用一个主函数即可完成。 首先,定义一个整型数组,让用户输...