码迷,mamicode.com
首页 > 编程语言 > 详细

软件工程课堂练习:返回一个一维整数数组中最大子数组的和

时间:2016-04-13 22:19:58      阅读:179      评论:0      收藏:0      [点我收藏+]

标签:

题目:返回一个一维整数数组中最大子数组的和。
要求:
输入一个一维整形数组,数组里有正数也有负数。
一维数组首尾相接,象个一条首尾相接带子一样。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。

此次何琳琳负责程序分析,代码编程,张一博负责代码复审和代码测试计划。

经分析讨论设计思路如下:

1、定义一个长为20的数组,先对前10个数进行初始化,后10个数等于前10个数;

2、设置长度为10的循环依次以前十个数为头进行最大子数组的计算;

3,再设置一个数组用来存储每次循环产生的最大子数组和;然后取最大值

4、输出最大值

源代码

 1 package 数组;
 2 
 3 import java.util.*;
 4 public class Test {
 5 
 6   public static void main(String[] args) {
 7       // TODO 自动生成的方法存根
 8       int []shuzu=new int[20];    
 9       int []max=new int[10];
10       int i,sum=0;
11       //初始化数组
12       for(i=0;i<10;i++)
13       {
14           System.out.println("请输入第"+(i+1)+"个值");
15           Scanner input=new Scanner(System.in);
16           shuzu[i]=input.nextInt();    
17       }
18       for(i=10;i<20;i++)
19       {
20           shuzu[i]=shuzu[i-10];
21       }
22       int w=0;
23       for(int x=0;x<10;x++)
24       {
25           sum=shuzu[x];       
26           for(i=x;i<(x+10);i++)
27           {
28               if(w<0)
29               {   
30                   w=shuzu[i];
31               }
32               else
33               {
34                   w+=shuzu[i];
35               }
36               if(sum<w)
37               {
38                   sum=w;
39               }
40           }
41           w=0;
42           max[x]=sum;
43           System.out.println("各个子数组的最大子数组和为:");
44           System.out.println(max[x]);
45       }
46       int max1=max[0];
47       for(int q=0;q<10;q++)
48       {
49           if(max[q]>max1)
50           {
51               max1=max[q];
52           }
53       }
54       System.out.println("最大子数组和为"+max1);    
55 
56   }
57 }

结果截图:

 技术分享技术分享

技术分享技术分享

技术分享技术分享

合作体会:两次程序基本思路相差不多,针对w作为求和的中介,在每次不同首项求最大子数组和完毕后,必须初始化为0,不然会发生和的叠加。

 

软件工程课堂练习:返回一个一维整数数组中最大子数组的和

标签:

原文地址:http://www.cnblogs.com/qianxia/p/5384684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!