zoukankan      html  css  js  c++  java
  • 子数组和最大值算法

    程序设计思路:

      有数组Array[10], 先设置两个变量sum和max,一个存贮子数组的和,一个存贮和的最大值,先令sum=Array[0] max=Array[0],然后用循环遍历数组的每一个数,如果sum+Array[1]> sum那么将sum更新为sum+Array[1],如果更新的sum大于max那么将max更新为sum。如果sum+Array[1]<0那么令sum=0,再往后查找别的子数组。如果sum+第二个数的值大于0小于sum,令sum=sum+Arrar[1]。

    程序源代码:

     1 public class Test2 {
     2      public static void main(String args[]){
     3          int Array[]={0,1,5,-4,9,10,54,-6,-34,78};
     4          int max=Array[0];
     5          int sum=Array[0];
     6          for(int i=1;i<10;i++){
     7              if(sum+Array[i]>=sum){
     8                  sum=sum+Array[i];
     9                  if(sum>max){
    10                  max=sum;}
    11              }    
    12              else if(sum+Array[i]<0){
    13                  sum=0;
    14              }
    15              else{
    16                  sum=sum+Array[i];
    17              }
    18          }
    19          System.out.println("和最大的子数组的和为:"+max);
    20      }
    21 }    

    运行结果截屏:

    问题分析:

      在运算子数组和的时候,比较加上下一数据项和已存在子数组的和相比较,在和小于原盒的时候直接归零了,导致算出的和最大值有误!

      即令sum+Array[i]<sum)直接使sum=0,出现错误

    总结:
      在写程序的时候应该先想好思路,想清楚算法,不然容易出现错误
  • 相关阅读:
    第一阶段冲刺02
    梦断代码阅读笔记01
    第一阶段冲刺01
    第十周总结报告
    单词统计
    用户模板分析
    第九周总结
    第九周课后作业
    py_11_ 0726
    Day_01
  • 原文地址:https://www.cnblogs.com/amiee/p/5368705.html
Copyright © 2011-2022 走看看