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

团队项目——最大子数组和2

时间:2016-04-12 22:10:17      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

设计思路:

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

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

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

4、输出最大值

源代码:

 1 //import java.util.Random;
 2 //import java.util.Scanner;
 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,不然会发生和的叠加。

团队项目——最大子数组和2

标签:

原文地址:http://www.cnblogs.com/muamu/p/5384431.html

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