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


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

    页面的优化

     

  • 相关阅读:
    BLOB
    cesium 检测视图改变的代码
    有关Nodejs的一些插件介绍
    线程基础知识
    进程和线程概念对比
    C#对象与XMl文件之间的相互转换(转)
    简介C#读取XML的方式(转)
    关于c# Debug和Release的区别 (转)
    c++堆和栈(转)
    浅谈C#堆栈与托管堆的工作方式(转)
  • 原文地址:https://www.cnblogs.com/zll20153246/p/6653333.html
Copyright © 2020-2023  润新知