zoukankan      html  css  js  c++  java
  • 软件工程课堂练习:返回一个一维整数数组中最大子数组的和

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

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

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

    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,不然会发生和的叠加。

    合作照片

  • 相关阅读:
    Django rest_framework之序列化(serializers)
    异常处理
    Django之ModelForm通过ajax用户登录验证
    Django之ModelForm用户登录注册
    Django之Model操作
    Jenkins+Maven+SVN+Nexus 搭建持续集成环境
    nginx rewrite域名跳转访问XML接口
    python自动发布应用脚本
    Django基础
    Web安全概述
  • 原文地址:https://www.cnblogs.com/qianxia/p/5384684.html
Copyright © 2011-2022 走看看