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

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

    出现的问题:在编译的过程中会出现数组越界的问题,和变量指代不清楚的问题,数组越界问题用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);
    		}
    
    	
    }
    

     结果截图:

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

  • 相关阅读:
    vue项目使用async await 封装 axios
    vue实现预览功能(包括doc,pdf,图片,视频)
    vue中实现下载文件功能
    vue项目中加入拖放排序功能
    Vue项目中生成二维码
    position跟display、overflow、float这些特性相互叠加后会怎么样?
    localStorage使用注意
    webpack 使用总结
    cookie作用域
    语法糖的理解
  • 原文地址:https://www.cnblogs.com/kangzhijia/p/6652052.html
Copyright © 2011-2022 走看看