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 ...
随机推荐
- Arduino语言介绍
Arduino语言介绍 Arduino语言是建立在C/C++基础上的,其基础是C语言,Arduino语言只不过把AVR单片机(微控制器)相关的一些参数设置都函数化,不用我们去了解他的底层,让不了解AV ...
- 2019春季训练02: JU Flash Contest Gym - 102035 训练报告与复盘
这场题极其简单 Solved 19 / 19 A Gym 102035A N integers 略 Solved 10 / 33 B Gym 102035B Mahmoud the Thief 用ma ...
- 再说C模块的编写(2)
[前言] 在<再说C模块的编写(1)>中主要总结了Lua调用C函数时,对数组和字符串的操作,而这篇文章将重点总结如何在C函数中保存状态. 什么叫做在C函数中保存状态?比如你现在使用Lua调 ...
- Robot Framework 环境安装(一)
1.安装python:https://www.python.org/2.安装python的第三方库:robotframework (1)检查是否支持pip命令. (2)robotframework安装 ...
- 【web】服务器推送的实现方式(转)
轮询 http流 websocket https://www.cnblogs.com/freud/p/8397934.html http2.0 浅谈Websocket.Ajax轮询和长连接(lon ...
- Google Android SDK开发范例大全笔记 二
网络设备管理相关相关 代码地址 1 WifiManager LocationManager分别控制 wifi及GPS WifiManager 判断网络状态 ,LocationManager判断定位状态 ...
- Visual Studio 2013 突然不高亮,编译报错
同事的电脑,估计是windows更新失败的原因,C盘容量减小到不到1G,VS的高亮也坏了,重启后硬盘容量增加了但是仍然不高亮. 解决办法记录一下: 重置下. 开始菜单 -->所有程序--> ...
- git本地项目上传至码云gitee
如果你的本机是安装成功第一次使用,先配置一下一些基本的信息 $ git config--global user.name "Your Name" $ git config --gl ...
- 动态dp
题解: 首先这类题目本身是一个dp/树形dp 然后带上了修改(ddp) 为了权衡查询和修改的时间,我们采用树剖来维护 假设我们能够对每个点维护除了重儿子之外的信息 那么我们的修改只需要修改log个节点 ...
- 利用yarn capacity scheduler在EMR集群上实现大集群的多租户的集群资源隔离和quota限制
转自:https://m.aliyun.com/yunqi/articles/79700 背景 使用过hadoop的人基本都会考虑集群里面资源的调度和优先级的问题,假设你现在所在的公司有一个大hado ...