zoukankan      html  css  js  c++  java
  • 个人作业(最大子数组)

    题目:返回一个整数数组中最大子数组的和。
    要求:
    输入一个整形数组,数组里有正数也有负数。
    数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
    求所有子数组的和的最大值。要求时间复杂度为O()

    发表一篇博客文章讲述设计思想,出现的问题,可能的解决方案(多选)、源代码、结果截图、总结。

    设计思路:

    (1)定义整数数组arr[i]

    (2)定义maxsum为最大子数组和并赋初值为arr[0]

    (3)定义一个中间变量temparr[0]计算子数组(连续的)的和当temp为负数时更新temp为                               当前arr[i]值当temp再次被赋值为正数(即temp为负值后遇到的第一个大于0array[i])时如果该数值大于原来的maxsum则更新maxsum

    (4)如果temp>0temp>maxsum更新maxsum

    (5)返回maxsum

     源代码:

      

    import java.util.Scanner;
    public class GetMaxArraySum {
      public static int getMax(int arr[]){//定义一个函数求数组中最大子数组和
        int maxSum=arr[0];
        int temp=0;//用来存储连续子数组的和
        for(int i=0;i<arr.length;i++)
          {
            if(temp<0)
              {
                temp=arr[i];//当子数组的和为负数时直接抛弃并把当前数字赋给它
                if(temp>0&&maxSum<temp )//当temp小于0后出现第一个大于0的temp时且大于原来的maxsum赋值
                  {

                    maxSum=temp;}//一开始没写该语句当输入1,-2,4的时候输出1出现逻辑错误
                  }

              }
            else
             {
                temp+=arr[i];//如果连续数字和为正则继续加下去
                if(maxSum<temp)
                  {
                    maxSum=temp;//当现有连续数字和大于之前最大连续数字和时更新最大值
                  }
              }
           }
        return maxSum;
      }
      public static void main(String[] args){
      int []array=new int[5];
      System.out.println("请输入要求解的数组个数:");
      Scanner reader=new Scanner(System.in);
      int n=reader.nextInt();
      System.out.println("请输入要求解的数组5:");
      for(int i=0;i<n;i++)
       {
        array[i]=reader.nextInt();
       }
      int result=getMax(array);
      System.out.println("最大子数组和为:"+result);
    }

    结果截图:
      

      

    总结(遇到的问题):

    (1)一开始写完程序运行时系统提示没有main函数

          解决:重建了一个项目,大概是一开始建错项目了

    (2)当输入1,-2, 3时返回1

          解决:逻辑错误,忘记考虑当temp更新为3时且大于原来的1时应该传递给maxsum

      

  • 相关阅读:
    ASP.NET MVC 4 中Jquery上传插件Uploadify简单使用-版本:3.2.1
    EasyUI Accordion下的Panel面板初始化时全部折叠
    找回windows 8 中隐藏的Aero Lite主题
    冒泡排序
    sqlserver中常用的四个选项(NOCOUNT/ANSI_NULLS/QUOTED_IDENTIFIER/ XACT_ABORT)
    ASP.NET MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
    ASP.NET MVC Bundle使用 合并压缩
    Code First Migrations
    Android系统开发--灯光系统之电池灯的流程分析
    Android系统--灯光系统驱动编写
  • 原文地址:https://www.cnblogs.com/liying123/p/5369219.html
Copyright © 2011-2022 走看看