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

设计思想:返回子数组的最大和就是将子数组都利用循环的方式找出来在将里面的数字相加,一个环就是将数组循环一遍即可,将其中的数字之和相加求和

出现的问题:在编译的过程中会出现数组越界的问题,和变量指代不清楚的问题,数组越界问题用if语句来将其解决

可能的解决方案:在解决这个问题时就要考虑子数组的情况和数组内数字的加和,这些都可以用循环和判断语句来解决,其实就是将一串数字求最大值稍微繁化了,但是基本的思想还是差不多的。

源代码:

package 数组;

public class arraysum {
	
		public static void main(String args[]){
			int array[]={1,-3,2,-4};//原数组
			int a[]={5,-3,-2,4,5,-3,2,-4};//环拆开的数组
			int max,max2,max3,max4;
			max=a[0];
			
			int Tmax=max;//最大值的标志
			for(int i=0;i<a.length;i++)
			{
				if(a[i]>max)
				{	
					max=a[i];
				}
				max2=max;
				if(i<a.length-1)//越界的判断
				{
					if(a[i]+a[i+1]>max2)
					{
						max2=a[i]+a[i+1];
					}
				}
				max3=max2;
				if(max3>Tmax)
				{
					Tmax=max3;
				}
				if(i<a.length-2)
				{
					if(a[i]+a[i+1]+a[i+2]>max3)
					{
						max3=a[i]+a[i+1]+a[i+2];
					}
				}
				max4=max3;
				if(max4>Tmax)
				{
					Tmax=max4;
				}
				if(i<a.length-3)
				{
					if(a[i]+a[i+1]+a[i+2]+a[i+3]>max4)
					{
						max4=a[i]+a[i+1]+a[i+2]+a[i+3];
					}
				}
				if(max4>Tmax)
				{
					Tmax=max4;
				}
				
			}
			System.out.println("子数组的最大返回值为:"+Tmax);
		}

	
}

 结果截图:

总结:这个程序在一定的程度上锻炼了我的逻辑思维能力,大量的括号也是蒙的很,一直得注意自己书写的格式,另外觉得书写的规范性是自己非常欠缺的,应该好好的练习

原文地址:https://www.cnblogs.com/kangzhijia/p/6652052.html