一个关于求数组内最大子数组的和的小程序以及一周总结
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 |
周总计 |
|
|
|
|
|
|
|
时间记录日志
|
开始时间 |
结束时间 |
中断时间 |
净时间 |
活动 |
备注 |
3月27日 |
18:40 |
21:00 |
10min |
70min |
听课,编程 |
四则运算网页版 |
3月28日 |
19:10 |
21:30 |
10min |
110min |
编程 |
四则运算网页版 |
3月29日 |
19:20 |
21:20 |
10min |
110min |
阅读 |
四则运算网页版 |
3月30日 |
19:00 |
21:00 |
20min |
100min |
编程 |
四则运算网页版 |
3月31日 |
16:00 |
17:30 |
|
90min |
编程 |
四则运算网页版 |
4月1日 |
18:30 |
21:30 |
10min |
110min |
|
|
错误总计
3月28日 |
无法正确跳转页面, |
3月29日 |
不能实现一些参数的传递 |
3月30日 |
数组库调取错误 |
3月31日 |
页面的优化 |
以上是关于一个关于求数组内最大子数组的和的小程序以及一周总结的主要内容,如果未能解决你的问题,请参考以下文章