java实现求最大子数组和的逐步显示
package 最大的子数组和;
import java.util.Scanner;
public class shuzu {
public static int maxArr(int a[]) {
int max=a[0];
for(int i=1;i<a.length;i++) {
if(a[i]>max) {
max=a[i];
}
}
return max;
}
public static void main(String args[]) {
/*
* 生成数组
*/
System.out.println("请输入数组里数字个数");
Scanner scan = new Scanner(System.in);
int num = scan.nextInt();
int[] array = new int[num];
System.out.println("请输入"+num+"个数值,空格间隔");
for(int i = 0;i < num;i++) {
array[i] = scan.nextInt();
}
int lon = ((1+num)/2+1)*num;//存放所有子数组和的 数组
int[] sum = new int[lon];
int sumchangdu = 0;
int sumchangdu1 = 0;
/*求所有子数组的和 放进sum数组中*/
int[] maxarr = new int[num];//存放子数组和最大值的所有组成元素的数组
for(int i = 0;i < num;i++) {
int[] arr = new int[num];//存放当前子数组和的所有组成元素的数组
int asum = 0;
int changdu = 0;
for(int j = 0; j < num - i;j++) {
arr[changdu] = array[i+j];
asum = asum + array[i+j];
sum[sumchangdu] = asum;
sumchangdu1 = sumchangdu+1;
System.out.println("当前执行第"+sumchangdu1+"步");
System.out.println("第"+ sumchangdu1 +"个子数组和为:"+sum[sumchangdu]);
System.out.print("组成当前的子数组和的元素为:");
for(int y = 0; y < arr.length;y++) {
if(arr[y]!=0)
System.out.print(arr[y]+" ");
}
System.out.println("");
if(sum[sumchangdu]==maxArr(sum)) {
for(int k =0; k < arr.length;k++)
maxarr[k] = arr[k];
}
System.out.println("前"+ sumchangdu1 +"个子数组和的最大值为:"+maxArr(sum));
System.out.print("组成最大子数组和的元素为:");
for(int x =0;x < maxarr.length;x++ ) {
if(maxarr[x]!=0)
System.out.print(maxarr[x]+" ");
}
System.out.println("");
System.out.println("输入0键开始执行下一步");
int x = scan.nextInt();
if(x==0) {
System.out.println("--------------------------------------------");
sumchangdu++;
changdu++;
}
else {
System.out.println("输入有误,程序退出!");
System.exit(0);
}
}
}
scan.close();
int max = sum[0];
for(int m = 1; m < lon;m++) {
if(sum[m]>max) //求sum数组最大的值
max = sum[m];
}
System.out.println("最大子数组和为:"+max);//输出最大的子数组和
}
}
要求:求一个一维数组的最大子数组和,并要求逐步实现,显示执行第几步,当前所处理的元素,当前子数组和,当前最大子数组和以及最大子数组和所组成的元素
思路:定义int[] maxarr = new int[num];//存放子数组和最大值的所有组成元素的数组,int[] arr = new int[num];//存放当前子数组和的所有组成元素的数组,双层for循环实现,用方法public static int maxArr(int a[])判断当前所存储的子数组和是否为最大的子数组,如果是则存储,不是则继续利用上一个最大的子数组和的数组。
java实现求最大子数组和的逐步显示的更多相关文章
- [LeetCode] Maximum Product Subarray 求最大子数组乘积
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- [LeetCode] 152. Maximum Product Subarray 求最大子数组乘积
Given an integer array nums, find the contiguous subarray within an array (containing at least one n ...
- Java文件写入与读取实例求最大子数组
出现bug的点:输入数组无限大: 输入的整数,量大: 解决方案:向文件中输入随机数组,大小范围与量都可以控制. 源代码: import java.io.BufferedReader; import j ...
- java环境的配置和求最大子数组
做java开发的朋友,都应该有一个适合自己的开发环境,而eclipse就是这么一个适合java开发的集成环境,完全免费,是java开发人员的必备平台.在安装eclipse之前需要安装JDK, JDK是 ...
- 结对开发五--对一千个数long型的一维数组求最大子数组的和
一.设计思想 我们根据第一个实验,再让他自动生成1000个随机long型数.大致思想和实验一一样,自己已埋入炸弹. 二.实验代码 package com.minirisoft; import java ...
- 53. Maximum Subarray(动态规划 求最大子数组)
Find the contiguous subarray within an array (containing at least one number) which has the larges ...
- 求二维数组的最大子数组———曹玉松&&蔡迎盈
继上节课老师让求了一维数组最大的子数组后,这节课堂上,老师加深了难度,给了一个二维数组,求最大子数组,开始觉得很容易,但是自己思考起来感觉这个算法很困难,既需要考虑数组直接的连续,又要求出最大的,老师 ...
- Task 4.3 求环形数组的最大子数组和
任务要求:输入一个整形数组,数组里有正数也有负数. 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. 如果数组A[0]……A[j-1]首尾相邻,允许A[i-1], …… A[n- ...
- [LeetCode] Maximum Subarray 最大子数组
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
随机推荐
- iTOP-4412开发板_驱动_adc驱动升级和测试例程
本文档介绍 iTOP-4412 开发板的 adc 驱动的升级和测试例程.自带的驱动只能支持一路 adc,本文介绍如何修改可以支持 4 路 adc 的控制.1 硬件简介如下图所示,这是 4412 的 d ...
- 使用fiddler修改支付金额,支付必测
使用fiddler4先把网页拦截,修改服务器返回的参数,并把修改后的数据包发送给服务器,若该页面价格修改成功则是一个重大bug. 以下是操作流程: 一.拦截订单请求 方法一: 1.在下方命令行输入命令 ...
- Jhipster 一个Spring Boot + Angular/React 全栈框架
Jhipster 一个Spring Boot + Angular/React 全栈框架: https://www.jhipster.tech/
- HTTP协议09-响应首部字段
响应首部字段 响应首部字段是由服务器向客户端返回响应报文中所使用的字段,用于补充响应的附加信息.服务器信息,以及对客户端的附加要求等信息. 1)Accept-Ranges Accept-Range:b ...
- vue-cli新版 -- 记录
1.新版Vue CLI 项目天生支持 PostCSS.CSS Modules 和包含 Sass.Less.Stylus 在内的预处理器. 所以安装了less后者sass可以直接使用,不需要再像以前在w ...
- Sleep和wait
sleep()和wait()的区别及wait方法的一点注意事项 一.查看API sleep是Thread类的方法,导致此线程暂停执行指定时间,给其他线程执行机会,但是依然保持着监控状态,过了指定时 ...
- 动态dp
题解: 首先这类题目本身是一个dp/树形dp 然后带上了修改(ddp) 为了权衡查询和修改的时间,我们采用树剖来维护 假设我们能够对每个点维护除了重儿子之外的信息 那么我们的修改只需要修改log个节点 ...
- SQL反模式学习笔记15 分组
目标:查询得到每组的max(或者min等其他聚合函数)值,并且得到这个行的其他字段 反模式:引用非分组列 单值规则:跟在Select之后的选择列表中的每一列,对于每个分组来说都必须返回且仅返回一直值. ...
- vue中mint-ui的filed的与blur事件结合实现检查用户输入是否正确
标题mint-ui的filed与blur事件验证用户输入格式是否正确说明:本人前端菜鸟,只是想借个地方做个笔记,为了以后查阅时比较方便.如有大神有什么建议的地方,欢迎提出来. 1.不得不说,mint- ...
- windows server 简化设置
win2012任务管理器显示磁盘管理员运行命令提示符,diskperf -y 不要开机密码 运行 netplwiz 勾去掉 运行 gpedit.msc 计算机设置-Windows设置 -安全设置-帐户 ...