码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-03-31 20:56:09      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:ble   最大子数组   div   负数   循环   循环数组   cal   最大值   实现   

    一个数组内有正数和负数,而且数组是循环的。求数组内最大子数组的和。要求数组是算法空间复杂度为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日

页面的优化

 

 

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

标签:ble   最大子数组   div   负数   循环   循环数组   cal   最大值   实现   

原文地址:http://www.cnblogs.com/zll20153246/p/6653333.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!