一个关于求数组内最大子数组的和的小程序以及一周总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个关于求数组内最大子数组的和的小程序以及一周总结相关的知识,希望对你有一定的参考价值。

    一个数组内有正数和负数,而且数组是循环的。求数组内最大子数组的和。要求数组是算法空间复杂度为O(1)。

    思路:

    1.求出每个子数组的值,比较大小。

    2.定义一个参数,为数组的长度。

    3.构造另外的数组,使得是原数组的得到两个集合。比如a={1,2,3,4}.b={1,2,3,4,1,2,3,4};

    4.这样可以满足数组的循环,参数为原数组的长度。

代码如下:

package zuida;
import java.io.*;
import java.util.Scanner;
class qiu 
{
    public int shuchu(int a,int l,int f[],int x)
    {
        int m[]=new int[l*(l+1)/2];
        m[0]=f[a];
        a=a+1;
        int b=1,s=0;
        for(int i=a;i<x+s;i++)//从第一位开始循环,控制循环长度
        {
            if(i==x-1)//如果循环到最后一位
            {
                
                m[b]=m[b-1]+f[i];
                i=a+s;//从原数组的下一位开始
                s++;//起始位置加1
                b++;
                m[b]=f[i];
                b++;
                
            }
            else//如果没有到最后一位
            {
            m[b]=m[b-1]+f[i];//将每一位都求和累加,求出每个子数组的和,保存在数组m中
            b++;
            }
        }
        int t=m[0];
        for(int i=1;i<l*(l+1)/2;i++)
        {
            if(t<m[i])
            {
            t=m[i];    
            }
        }
        return t;
    }
}
public class shu {
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int f[]={1,2,-3,0,7,-8,4};//原数组
        int ff[]={1,2,-3,0,7,-8,4,1,2,-3,0,7,-8,4};//构造的循环数组。使得可以循环
        int n=7;
        int s[]=new int[n];
        qiu m=new qiu();
        int t=m.shuchu(0,2*n,ff,n);//调用类的函数,第一个参数为起始位置,第二个为数组的长度,最后一个参数原数组的长度
        System.out.println("最大子数组的和为:"+t);//输出最大值
        
    }

}
;

结果图:

技术分享

                        项目计划总结

    任务

 

日期(min)

 

 听课

 

阅读课 

  本

 

编程

 

准备考

  试

 

 

 

日总计

   周日

 

 

 

 

 

 

 

  星期一

  160

  

 70

 

 

 

   70

  星期二

 

   

 150

 

 

 

  150

  星期三

 

 

 120

 

 

 

  120

  星期四

 

 

 80

 

 

 

   80

  星期五

 

 

 60

 

 

 

   60

  星期六

 

 

 70

 

 

 

   70

  周总计

 

 

 

 

 

 

 

                     时间记录日志

 

 

开始时间

结束时间

中断时间

 净时间

  活动

  备注

327

  18:40

 21:00

  10min

 70min

  听课,编程

四则运算网页版

328

  19:10  

 21:30

  10min

 110min

 编程

四则运算网页版

329

  19:20

 21:20

  10min

 110min

 阅读

四则运算网页版

330

  19:00

 21:00

  20min

 100min

 编程

四则运算网页版

331

  16:00

 17:30

 

 90min

 编程

四则运算网页版

41

  18:30

 21:30

  10min

 110min

 

 

 

错误总计

3月28日

无法正确跳转页面,

3月29日

不能实现一些参数的传递

3月30日

数组库调取错误

3月31日

页面的优化

 

 

以上是关于一个关于求数组内最大子数组的和的小程序以及一周总结的主要内容,如果未能解决你的问题,请参考以下文章

能返回一个整数数组中最大子数组的和的小程序

返回一个二维整数数组中最大子数组的和的小程序

关于求已知整数数组的连续子数组的最大和的方法

软件工程个人作业04(求数组最大子数组的和)

求环形连续子数组的和的最大值

Python算法与数据结构--求所有子数组的和的最大值