题目:返回一个整数数组中最大子数组的和。
要求:
输入一个一维整形数组,数组里有正数也有负数。
一维数组首尾相接,象个一条首尾相接带子一样。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。
程序设计思想:程序中使用到一个用来求数组的最大子数组和的函数,这里可以将原数组的前n-1项加到数组的后面,形成一个新的数组,这样就可以求这种首尾相连的数组的最大子数组和了。
源代码:
public class zishuzu { /** * @param args */ public static int max(int array[]){ int Max=0; int sum=0; int len; len=array.length; for(int i=0;i<len;i++) { sum+=array[i]; if(sum>Max) { Max=sum; } if(sum<0) { sum=0; } } return Max; } public static void main(String[] args) { // TODO Auto-generated method stub int a[]={1,2,-3,5,7,-8}; System.out.print("测试数组为:"); for(int i=0;i<a.length;i++) { System.out.print(a[i]+","); } System.out.println(""); System.out.println("该数组最大子数组的值为:"+max(a)); int b[]={1,2,-3,5,7,-8,1,2,-3,5,7}; System.out.print("将数组首尾相连后,数组等价于:"); for(int k=0;k<b.length;k++) { System.out.print(b[k]+","); } System.out.println(""); System.out.println("该数组最大子数组的值为:"+max(b)); } }
试验结果截图:
周活动总结表:
日期/任务 |
听课 |
阅读课本 |
课下学习 |
日总计 |
|
周日3.26 |
|||||
周一 |
120m |
30m |
30m |
150m |
|
周二 |
40m |
40m |
|||
周三 |
50m |
50m |
|||
周四 |
120m |
40m |
20m |
180m |
|
周五 |
40m |
40m |
|||
周六 |
40m |
40m |
|||
周总计 |
240m |
70m |
2100m |
540m |
时间记录日志:
日期 |
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
C |
U |
3.6 |
14:00 |
16:00 |
10m |
110m |
上课,编程 |
软件工程课 |
||
3.7 |
19:00 |
21:00 |
20m |
100m |
看书,编程 |
写软件工程作业 |
||
3.8 |
19:00 |
21:00 |
15m |
105m |
看书,编程 |
学javaweb |
||
3.9 |
16:00 |
18:00 |
10m |
110m |
上课 |
Javaweb上课 |
||
3.10 |
18:00 |
20:00 |
30m |
90m |
构思,写java |
写四则运算程序3 |
时间: 2024-08-02 02:49:44