博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大子数组求解两个
阅读量:4465 次
发布时间:2019-06-08

本文共 2100 字,大约阅读时间需要 7 分钟。

设计思想:

创建一个数组来存数,将整个数组中所有的正数和负数做好标记,从第一个数字开始想加,如果遇到正数就加上,如果遇到负数就比较,相减后再加上下一个正数大还是下一个正数大,将大的那个数作为最大数,一直遍历到数组结束,

至于循环数组,相当于将一个数组延长为两倍,加入一个判定条件,使得所有数的个数相加小于原来数组,其余的应该和第一个是差不多。

 源代码:

import java.util.Scanner;public class Lianccc { public static void suan(int a[],int aaa) {    int i,j = 0,max = a[0],aa=0,bb=0,zong=0;     for( i=0;i
=0) { aa=aa+a[i]; j=i; } if(a[i]<0) { bb=bb+a[i]; } zong=aa+bb; if (zong>=a[i]) {
if(a[i]>0) max=zong; else max=max; } else {
if(a[i]>=0) max=a[i];aa=max;bb=0; if(a[i]<0){ max=a[i]; } } } System.out.println("最大子数组是"+max);} public static void ssuan(int a[],int aaa) { int[] b=new int[aaa*2]; int i,j = 0,max = a[0],aa=0,bb=0,zong=0,pan=0; for(i=0;i
aaa)pan++; if(b[i]>=0) { aa=aa+b[i]; j=i; } if(b[i]<0) { bb=bb+b[i]; } zong=aa+bb; if (zong>=b[i]) { if(b[i]>0) max=zong; else max=max;; } else {
if(b[i]>=0) max=b[i];aa=max;bb=0;pan=0; if(b[i]<0){ max=a[i]; } } if(pan==3)break; } System.out.println("最大循环子数组是"+max);} public static void main(String[] args) { // TODO Auto-generated method stub Scanner in=new Scanner(System.in); System.out.println("请输入元素个数"); int aaa=in.nextInt(); int aa[]=new int[aaa];//建立一个数组; System.out.println("请输入元素"); for (int i = 0; i < aaa; i++) { aa[i]=in.nextInt();//输入元素个数。 } suan(aa, aaa); ssuan(aa, aaa); }}

 结果截图

总结:难点主要在于时间复杂度为n,只要第一个实现了,第二个循环很好实现,

 

转载于:https://www.cnblogs.com/anjiu/p/6653102.html

你可能感兴趣的文章
二维码图片生成
查看>>
在做操作系统实验的一些疑问
查看>>
Log4J日志配置详解
查看>>
NameNode 与 SecondaryNameNode 的工作机制
查看>>
Code obfuscation
查看>>
大厂资深面试官 带你破解Android高级面试
查看>>
node.js系列(实例):原生node.js实现接收前台post请求提交数据
查看>>
SignalR主动通知订阅者示例
查看>>
golang的表格驱动测试
查看>>
用python实现矩阵转置
查看>>
linux 小技巧(磁盘空间搜索)
查看>>
iOS开发——捕获崩溃信息
查看>>
(for 循环)编程找出四位整数 abcd 中满足 (ab+cd)(ab+cd)=abcd 的数
查看>>
tomcat使用spring-loaded实现应用热部署
查看>>
boost1.53中的lock-free
查看>>
链表_leetcode203
查看>>
基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
查看>>
连接不上sql server服务器的解决方案
查看>>
记录安装oracle的那些事(二)之双系统安装
查看>>
c3po数据库连接池中取出连接
查看>>