4月25日课上练习 一维数组最大子数组(debug版)
一维数组中求最大子数组的算法
package com.wangwang.mar; import java.util.Scanner;
public class Sum { public static void main(String[] args) {
// TODO Auto-generated method stub Scanner sc=new Scanner(System.in);
System.out.println("输入数组长度");
int n=sc.nextInt();
System.out.println("输入数组数据(用空格分开)");
int i;
int a[]=new int[n];
for(i=0;i<n;i++)
a[i]=sc.nextInt(); int begin=0;//子数组开始下标
int end=0;//子数组结束下标
int maxValue=a[0];
int tempValue=maxValue; //for循环寻找最大和的连续子数组
for(i=1;i<n;i++)
{
tempValue+=a[i]; if((tempValue>a[i])&&(tempValue>maxValue))
{
end=i;
maxValue=tempValue; } else if(tempValue<=a[i])
{
begin=i;
end=i;
tempValue=a[i]; }
} //输出最大和的连续子数组的相关信息
System.out.println("最大子数组和为:"+maxValue+"\n子数组内容为:");
System.out.println("下标:");
for(i=begin;i<=end;i++)
System.out.print(i+" ");
System.out.println("\n"+"下标对应数值:");
for(i=begin;i<=end;i++)
System.out.print(a[i]+" "); } }
加入debug后,修改部分代码,如下:
package com.wangwang.mar; import java.util.Scanner;
public class Sum { public static void main(String[] args) {
// TODO Auto-generated method stub Scanner sc=new Scanner(System.in);
System.out.println("输入数组长度");
int n=sc.nextInt();
System.out.println("输入数组数据(用空格分开)");
int i;
int a[]=new int[n];
for(i=0;i<n;i++)
a[i]=sc.nextInt(); int begin=0;//子数组开始下标
int end=0;//子数组结束下标
int maxValue=a[0];
int tempValue=maxValue; System.out.println("设定起始数组为a[0]");
//for循环寻找最大和的连续子数组
for(i=1;i<n;i++)
{
tempValue+=a[i];
System.out.print("将a["+i+"]加入起始数组进行运算");
if(tempValue>a[i])
{
if(tempValue>maxValue) {
end=i;
maxValue=tempValue;
System.out.println(" "+"最大值更新,当前最大值为:"+maxValue);
}
else {
System.out.println(" "+"构成的新数组最大值不变为:"+maxValue);
}
} else if(tempValue<=a[i])
{
begin=i;
end=i;
tempValue=a[i];
maxValue=tempValue;
System.out.println(" "+"数组总和<该元素,该元素作为当前最大值为:"+maxValue);
}
} //输出最大和的连续子数组的相关信息
System.out.println("最大子数组和为:"+maxValue+"\n该子数组内容为:");
System.out.println("下标:");
for(i=begin;i<=end;i++)
System.out.print(i+" ");
System.out.println("\n"+"下标对应数值:");
for(i=begin;i<=end;i++)
System.out.print(a[i]+" "); } }
运行结果,如图:

4月25日课上练习 一维数组最大子数组(debug版)的更多相关文章
- jvm 之 国际酒店 6月25日上线内存溢出原因
6月25日OMS,Ihotel上线成功后执行了一个批处理,SOA报警提示某一台IHOTEL机器调用OMS失败率大于阀值,登录这个机器后发现这台机器CPU使用率处于80%以上,调用OMS有的时候超过5秒 ...
- 好消息:8月25日广州嵌入式Linux开发免费项目约定你
8月18日,粤嵌深圳分校举行了盛大的免费嵌入式项目体验,众多嵌入式爱好者排队参加项目体验的火爆场景仿佛还在眼前,体验效果得到学员一致好评.时隔一周,粤嵌广州总部也不容落后,在粤嵌广州总部举办<嵌 ...
- 全国Uber优步司机奖励政策 (1月25日-1月31日)
滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...
- 北京Uber优步司机奖励政策(10月19日~10月25日)
用户组:优步北京人民优步A组(适用于10月19日-10月25日) 滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万 ...
- 2016年12月25日 星期日 --出埃及记 Exodus 21:20
2016年12月25日 星期日 --出埃及记 Exodus 21:20 "If a man beats his male or female slave with a rod and the ...
- HDU(4528),BFS,2013腾讯编程马拉松初赛第五场(3月25日)
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4528 小明系列故事——捉迷藏 Time Limit: 500/200 MS (Java/O ...
- 2016年11月25日 星期五 --出埃及记 Exodus 20:16
2016年11月25日 星期五 --出埃及记 Exodus 20:16 "You shall not give false testimony against your neighbor.不 ...
- 2016年10月25日 星期二 --出埃及记 Exodus 19:9
2016年10月25日 星期二 --出埃及记 Exodus 19:9 The LORD said to Moses, "I am going to come to you in a dens ...
- 2016年6月25日 星期六 --出埃及记 Exodus 14:22
2016年6月25日 星期六 --出埃及记 Exodus 14:22 and the Israelites went through the sea on dry ground, with a wal ...
随机推荐
- zsh: command not found: conda的一种解决方法
通过conda —version来验证conda命令是否可用,若出现下图 则需要修改.zshrc,如下: 第一步: 第二步: 注意,1:/Users/mac/是anaconda的安装路径,须根据自己情 ...
- Socket模拟HTTP请求
WEB服务器可以可以理解为socket的上层封装,其也是TCP/IP协议,只要知道其IP地址和端口号就可以与他进行通信了 与WEB服务器数据交互,其重点在于请求头,如果请求头不对则不能进行数据传输 简 ...
- Spring之旅第一篇-初识Spring
一.概述 只要用框架开发java,一定躲不过spring,Spring是一个轻量级的Java开源框架,存在的目的是用于构建轻量级的J2EE应用.Spring的核心是控制反转(IOC)和面向切面编程(A ...
- docker~docker-compose的使用
回到目录 docker-compose是用来在Docker中定义和运行复杂应用的工具,比如在一个yum文件里定义多个容器,只用一行命令就可以让一切就绪并运行. 使用docker compose我们可以 ...
- 如何开发AR增强现实应用与产品
2016年被称为VR元年,可见火爆程度,但是我要告诉你,其实还有一种技术AR(增强现实)技术,才是下一个真正的“风口”技术.可以预见的是,未来AR应用爆发之时,必将超越VR产业规模,开拓千亿级市场空间 ...
- 用SpringCloud进行微服务架构演进
在<架构师必须要知道的阿里的中台战略与微服务> 中已经阐明选择SpringCloud进行微服务架构实现中台战略,因此下面介绍SpringCloud的一些内容,SpringCloud已经出来 ...
- 挖一挖@Bean这个东西
有Bean得治 任何一个正常程序的访问都会在内存中创建非常多的对象,对象与对象之间还会出现很多依赖关系(一个处理业务逻辑的类中几乎都会使用到别的类的实例),一般的做法都是使用new关键字来创建对象,对 ...
- Java 中的几种线程池,你之前用对了吗
好久不发文章了,难道是因为忙,其实是因为懒.这是一篇关于线程池使用和基本原理的科普水文,如果你经常用到线程池,不知道你的用法标准不标准,是否有隐藏的 OOM 风险.不经常用线程池的同学,还有对几种线程 ...
- 什么是mybatis?
[学习笔记] 什么是mybatis: Mybatis本质是一种半自动化的ORM框架,前身是ibatis,除了要pojo和映射关系之外,还需要些sql语句. 怎么看待ORM框架: 处理矛盾的,java程 ...
- 委托的多线程方法BeginInvoke
同步方法和异步方法: 同步方法调用在程序继续执行之前需要等待同步方法执行完毕返回结果.(比如烧水泡茶,需要等水烧开了才能继续泡茶) 异步方法则在被调用之后立即返回以便程序在被调用方法完成其任务的同时执 ...