您的位置:首页 > 其它

返回一个整数数组中最大子数组的和。

2016-04-07 20:46 274 查看
设计思想: 遍历所有子数组,将每个元素依次相加,将每次加后赋给一个值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
;


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

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

{

array[i]=reader.nextInt();

}

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

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

}

}

结果截图:





总结:

编写程序前一定要先想好程序的逻辑结构。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: