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 ...
- C# - 多线程(基础)
多线程 基础(Multithreading) 一些基本的关于线程和与其相关的概念 位)的变量赋值,这个操作就是原子性的.因为它可以一次性填充64位的二进制数据到栈上,属于一步完成,不会发生断裂.而假如 ...
- POJ 1556 The Doors(线段相交+最短路)
题目: Description You are to find the length of the shortest path through a chamber containing obstruc ...
- gitlab+PHP 自动部署设计方案
2018-9-26 14:00:39 星期三 场景: 由于某种情况, 不能使用Jenkins, so......只有自己实现了 看图: webUI 设计方案, - 文件夹A, 用来存放git分支- 文 ...
- OpenCV3编程入门-读书笔记1
一.OpenCV概述 1.OpenCV全程Open Source Computer Vision Library,即开源计算机视觉库.它是一个跨平台的开源计算机视觉库,可以运行在windows.lin ...
- [Linux]ln -al输出内容解析
第一项的第一位是文件类型:-: 表示普通文件d: 目录b: 块特殊文件c: 字符特殊文件l: 符号链接文件p: 命名管道文件FIFOs: 套接字文件 第二项是该文件的inode的链接计数,即stat ...
- (原创)cocos lua 热更新从零开始(一)最简单demo
开发环境:WIN7 + cocos2dx 3.10 lua版本 0.学习这篇内容的基础是你要会创建并运行一个cocos lua项目 1.热更新的思想所谓的热更新,就是在线更新代码和资源.热更新的过程首 ...
- mysql数据库基本语句
我们除了可以在mysql数据库或phpmyadmin中登陆数据库我们还可以使用linux中命令进行创建,下面我来给大家介绍一个简单的数据库创建方法吧. 首选用putty连接linux服务器,进行命令行 ...
- 一起学爬虫——urllib库常用方法用法总结
1.读取cookies import http.cookiejar as cj,urllib.request as request cookie = cj.CookieJar() handler = ...
- Go的sort接口实现
package main import ( "fmt" "sort" "time" ) type Track struct { Title ...