zoukankan      html  css  js  c++  java
  • 2020年2月25日课堂小测随笔

    一、题目

    二、源程序代码

    package test;
    import java.util.*;
    public class Array {
        public static void main(String []args) {
            
            int [] A= {1,-2,3,5,6};
            
            int max=0;
            int a,b;
            
            b=getCount(A)-getMin(A);
            a=getMax(A);
            
            if(a>b) {
                System.out.println(a);
            }else {
                System.out.println(b);
            }
            
        }
        public static int getMax(int [] a) {
            int []b=new int[a.length];
            System.arraycopy(a, 0, b, 0, a.length);
            for(int i=1;i<a.length;i++) {
                if(b[i]+b[i-1]>b[i]) {
                    b[i]+=b[i-1];
                }
            }
            int max=0;
            for(int i=0;i<b.length;i++) {
                if(max<b[i]) {
                    max=b[i];
                }
            }
            return max;
        }
        public static int getMin(int [] a) {
            int []b=new int[a.length];
            System.arraycopy(a, 0, b, 0, a.length);
            for(int i=1;i<a.length;i++) {
                if(b[i]+b[i-1]<b[i]) {
                    b[i]+=b[i-1];
                }
            }
            int min=0;
            for(int i=0;i<b.length;i++) {
                if(min>b[i]) {
                    min=b[i];
                }
            }
            return min;
        }
        public static int getCount(int [] a) {
            int count=0;
            for(int i=0;i<a.length;i++) {
                count+=a[i];
            }
            return count;
        }
    }
    array

    三、结果截图

     四、设计思想以及总结

      这道题刚刚看到的时候我的理解就是错误的,我以为需要是连续的整数才算是子数组,原来是只要是连续的加起来大就是子数组,走错了路。之后理解了大佬的方法,但是感觉有些问题,就是他的方法会改变原数组,所以我就新创建了一个数组。之后的问题将数组的首尾连接起来,在蒲同学的点拨之下我明白了。首尾连接起来的数组最大的子数组只有两种情况,就是在中间和前后,只在中间的是第一种情况最好处理。前后的可以吧全部的数加起来然后减去按照第一种类似的方法求出的最小子数组,就是最大的,然后两个比较取最大即可。虽然在课堂上没有把问题处理了,但是课下大佬的倾心相助让我很是感动,问题想不通的时候就需要换个角度思考,往往有新的收获!

  • 相关阅读:
    C#:String.Format数字格式化输出
    System.BadImageFormatException : 未能加载文件或程序集“Medici.PaymentRecover, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。
    How to debug windows service
    中文字符utf-8编码原则
    获取当前文件的绝对路径
    finfo_file
    usort 函数
    snmp 简单网管协议
    $this
    prinft he sprintf
  • 原文地址:https://www.cnblogs.com/suanai/p/12378634.html
Copyright © 2011-2022 走看看