zoukankan      html  css  js  c++  java
  • 4月25日课上练习 一维数组最大子数组(debug版)

    一维数组中求最大子数组的算法

    package com.wangwang.mar;
    
    import java.util.Scanner;
    public class Sum {
     
        public static void main(String[] args) {
            // TODO Auto-generated method stub
     
            Scanner sc=new Scanner(System.in);
            System.out.println("输入数组长度");
            int n=sc.nextInt();
            System.out.println("输入数组数据(用空格分开)");
            int i;
            int a[]=new int[n];
            for(i=0;i<n;i++)
                a[i]=sc.nextInt();
             
            int begin=0;//子数组开始下标
            int end=0;//子数组结束下标
            int maxValue=a[0];
            int tempValue=maxValue;
             
             
            //for循环寻找最大和的连续子数组
            for(i=1;i<n;i++)
            {
                tempValue+=a[i];
                
                if((tempValue>a[i])&&(tempValue>maxValue))
                {
                    end=i;
                    maxValue=tempValue;
                    
                }
                 
                else if(tempValue<=a[i])
                {
                    begin=i;
                    end=i;
                    tempValue=a[i];
                    
                }
            }
             
             
            //输出最大和的连续子数组的相关信息
            System.out.println("最大子数组和为:"+maxValue+"
    子数组内容为:");
            System.out.println("下标:");
            for(i=begin;i<=end;i++)
                System.out.print(i+"  ");
            System.out.println("
    "+"下标对应数值:");
            for(i=begin;i<=end;i++)
                System.out.print(a[i]+"  ");
             
             
        }
     
    }
    

     加入debug后,修改部分代码,如下:

     1 package com.wangwang.mar;
     2 
     3 import java.util.Scanner;
     4 public class Sum {
     5  
     6     public static void main(String[] args) {
     7         // TODO Auto-generated method stub
     8  
     9         Scanner sc=new Scanner(System.in);
    10         System.out.println("输入数组长度");
    11         int n=sc.nextInt();
    12         System.out.println("输入数组数据(用空格分开)");
    13         int i;
    14         int a[]=new int[n];
    15         for(i=0;i<n;i++)
    16             a[i]=sc.nextInt();
    17          
    18         int begin=0;//子数组开始下标
    19         int end=0;//子数组结束下标
    20         int maxValue=a[0];
    21         int tempValue=maxValue;
    22          
    23         System.out.println("设定起始数组为a[0]");
    24         //for循环寻找最大和的连续子数组
    25         for(i=1;i<n;i++)
    26         {
    27             tempValue+=a[i];
    28             System.out.print("将a["+i+"]加入起始数组进行运算");
    29             if(tempValue>a[i])
    30             {
    31                 if(tempValue>maxValue) {
    32                 end=i;
    33                 maxValue=tempValue;
    34                 System.out.println(" "+"最大值更新,当前最大值为:"+maxValue);
    35                 }
    36                 else {
    37                     System.out.println(" "+"构成的新数组最大值不变为:"+maxValue);    
    38                 }
    39             }
    40              
    41             else if(tempValue<=a[i])
    42             {
    43                 begin=i;
    44                 end=i;
    45                 tempValue=a[i];
    46                 maxValue=tempValue;
    47                 System.out.println(" "+"数组总和<该元素,该元素作为当前最大值为:"+maxValue);
    48             }
    49         }
    50          
    51          
    52         //输出最大和的连续子数组的相关信息
    53         System.out.println("最大子数组和为:"+maxValue+"
    该子数组内容为:");
    54         System.out.println("下标:");
    55         for(i=begin;i<=end;i++)
    56             System.out.print(i+"  ");
    57         System.out.println("
    "+"下标对应数值:");
    58         for(i=begin;i<=end;i++)
    59             System.out.print(a[i]+"  ");
    60          
    61          
    62     }
    63  
    64 }

    运行结果,如图:

     

  • 相关阅读:
    ajax提交表单,包括跳入的坑!
    js继承
    文本的选取和复制
    js 绑定的键盘事件
    webpack的使用 一、webpack 和webpack的安装
    json转化为C#、Java、TypeScript、VisualBasic、Python实体类
    ASP.NET MVC Route详解
    .net面试技术要点总结
    C#利用反射实现简单记事本功能插件
    ASP.NET网页请求以及处理全过程(反编译工具查看源代码)
  • 原文地址:https://www.cnblogs.com/mawangwang/p/10771298.html
Copyright © 2011-2022 走看看