【设计思路】
1.用户初始化一个数组
2.定义tempmax作为临时最大值,定义最大值max,初始均为array[0]
3.使用循环从array[1]开始,判断tempmax值为正或负,若为正tempmax为正,tempmax值变为tempmax加上遍历的数,若tempmax值为负,tempmax值变为遍历的那个数。
4.比较max和tempmax值大小,若max小将tempmax值赋给max
【程序源代码】
import java.util.*; public class MaxsArray { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("请输入你要求子数组最大值的数组长度:"); int length = sc.nextInt(); int array[] = new int[length]; System.out.println("请输入你要求子数组最大值的数组的数:"); for(int i=0;i<length;i++) { array[i] = sc.nextInt(); } int max = array[0]; int tempmax = array[0]; for(int i=1;i<length;i++) { if(tempmax<0) { tempmax = array[i]; } else { tempmax+=array[i]; } if(tempmax>max) { max = tempmax; } } System.out.println("子数组的最大值为:"+max); } }
【结果截图】
【出现错误】
之前没有设定tempmax,若max值为正,当遍历数为负时,输出结果有误
【解决方案】
加入tempmax和max值进行比较
【总结】
遍历求和使问题简单的解决,所以选择好的算法对一个程序实现非常重要。
时间: 2024-10-10 07:05:55