zoukankan      html  css  js  c++  java
  • 求数组的子数组的最大值

      一个整形数组,要求其子数组和的最大值,我才用的是将最大的子数组,写出来,逐次减去第一个,之后会比较最大值,知道减完。

    源代码:

    public class App7 {
        public static void main(String[] args) 
        {
            Scanner in= new Scanner(System.in);
            int[] num=new int [100];
            int[] num2=new int [100];
            int max=0;
            boolean f=false;
            int  s=in.nextInt();
            for(int i=0;i<s;i++) {         //输入数组
                num[i]=in.nextInt();
                if(num[i]>=0)f=true;
            }
            if(f==true) {
            max=num[0];
            num2[0]=num[0];
            for(int i=1;i<s;i++) {
                num2[i]=num2[i-1]+num[i];
                if(num2[i]>num2[i-1])max=num2[i];
            }
            for(int i=0,j=0;j<s;) {            //循环减去第一个
                num2[i]=num2[i]-num[j];
                if(num2[i]>max)max=num2[i];
                if(i==s-1) {j++;i=j;}
                else i++;
            }
            }
            else {
                max=num[0];
                num2[0]=num[0];
                for(int i=1;i<s;i++) {
                    num2[i]=num2[i-1]+num[i];
                    if(num2[i]>max)max=num2[i];
                }
            }
            System.out.println(max);
        }
        
    }

    在刚写完这个程序,最后检验的时候,我找到了当数组全为负数的时候,结果出现差错,原因是在最后一个循环的时候,两个数相减导致最大值为0.

    对此我采用判断输出全为负数是,只需采用第二个循环就可以输出正确的结果。

  • 相关阅读:
    福大软工 · 第十次作业
    最终作业:软工实践个人总结
    第三视角Beta答辩总结
    Beta 冲刺(7/7)
    Beta 冲刺 (6/7)
    Beta 冲刺 (5/7)
    Beta 冲刺 (4/7)
    Beta 冲刺 (3/7)
    Beta 冲刺 (2/7)
    福大软工 · 第十次作业
  • 原文地址:https://www.cnblogs.com/huan-ch/p/10506048.html
Copyright © 2011-2022 走看看