zoukankan      html  css  js  c++  java
  • 返回一个整数数组中最大子数组的和。

    设计思想:  遍历所有子数组,将每个元素依次相加,将每次加后赋给一个值b,加下一个元素后,与之前最大值比较,若小于,则最大值不变,否则更新最大值。刚加到和小于等于0时,b更新为数组下一位元素。

    出现的问题:  开始时b更新的条件判断错误,导致输出错误。

    源代码:

         import java.util.Scanner;

    public class Arraymax {

        public static int maxSum(int arr[]){  //定义一个函数maxSum 求数组中子数组和的最大值

               int sum = arr[0];   //sum 子数组和

               int b = 0;        

               for(int i = 0;i<arr.length;i++)

               { 

                   if(b<=0)  //子数组和小于0时,b为子数组为0时的元素的后一位

                       b=arr[i];  

                   else 

                       b+=arr[i];  //b 子数组和

                         if(b>sum)sum=b;  //将最大子数组和赋值给sum

               } 

               return sum; 

           } 

           public static void main(String[] args) { 

               System.out.println("请输入数组中元素个数;");

               Scanner reader=new Scanner(System.in);

               int n=reader.nextInt();

               int []array=new int[n];

               System.out.println("请输入数组:");

               for(int i=0;i<n;i++)    //输入数组

               {

                 array[i]=reader.nextInt();

               }

               int result = maxSum(array);   //调用函数

               System.out.println("最大字数组之和为:"+result); 

           }  

    }

    结果截图:

     

    总结:

      编写程序前一定要先想好程序的逻辑结构。

  • 相关阅读:
    python学习笔记(二)-字符串方法
    python学习笔记(一)-基础知识
    Charles抓包工具断点修改返回内容
    Charles抓包工具过滤网络请求
    Jmeter通过正则表达式提取器提取响应结果数据
    【PHP】什么时候使用Try Catch(转)
    【tp5.1】七牛云上传图片
    【PHP】统计问卷调查结果的选项票数和百分比
    【tp5.1】composer安装PHPExcel以及导入导出Excel
    【tp5.1】微信公众号授权登录及获取信息录入数据库
  • 原文地址:https://www.cnblogs.com/jinpeigang/p/5365360.html
Copyright © 2011-2022 走看看