`
thecloud
  • 浏览: 872174 次
文章分类
社区版块
存档分类
最新评论

求出数组的最大子集,并求和

 
阅读更多

一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和,求所有子数组的和的最大值,并打印出该数组。

这个程序的算法其实很简单,找出数组中所有的正数就可以了,然后求和,第一个代码保证了输出的数组最后一个元素后面没有逗号。

如果只输出最大和,那就简单多了,大家可以看第二段代码。

import java.util.*;
class ArraySort 
{	

	public static void find(int [] array)
	{
		int sum=0;
		List result=new ArrayList();
		for(int temp:array)
		{
			if(temp>0)
			{
				result.add(temp);				
			}			
		}
		
		for(int i=0;i<result.size();i++)
		{																		
			if(i==(result.size()-1))
			{
				System.out.print((int)result.get(i));
				sum+=(int)result.get(i);
				System.out.println("   sum="+sum);
			}
			else
			{
				System.out.print((int)result.get(i)+",");
				sum+=(int)result.get(i);								
			}
		}

	}
	public static void main(String[] args) 
	{
		Scanner sc=new Scanner(System.in);
	
		while(sc.hasNext())
		{
			String str=sc.nextLine();
			String[] arr=str.split(",");
			int[] array=new int[arr.length];
		for(int i=0;i<arr.length;i++)
		{
			array[i]=new Integer(arr[i]);
		}
			if(array.length==arr.length)
				ArraySort.find(array);
		}		
	}
}

如果程序要求直接输入最大自己的和,那么代码如下

import java.util.*;
class ArraySort 
{	

	public static int find(int [] array)
	{
		int sum=0;
		List result=new ArrayList();
		for(int temp:array)
		{
			if(temp>0)
			{
				result.add(temp);				
			}			
		}
		
		for(int i=0;i<result.size();i++)
		{																					
			sum+=(int)result.get(i);			
		}
		return  sum;

	}
	public static void main(String[] args) 
	{
		Scanner sc=new Scanner(System.in);
	int a=0;
		while(sc.hasNext())
		{
			String str=sc.nextLine();
			String[] arr=str.split(",");
			int[] array=new int[arr.length];
		for(int i=0;i<arr.length;i++)
		{
			array[i]=new Integer(arr[i]);
		}
			if(array.length==arr.length)
			a =ArraySort.find(array);
			System.out.println(a);
		}		
	}
}


分享到:
评论

相关推荐

    matlab三维数组 - Matlab中多维数组的快速操作 - 英文报告

    matlab三维数组 - Matlab中...这些操作包括两个大小可能不同的数组的元素乘法/除法,以及维度子集上的求和(边缘化)。本报告讨论了在Matlab中实现这些操作的有效方法,重点介绍了Bayes Net工具箱(BNT)中使用的实现。

    gasstationleetcode-LeetCode:LeetCode问题的解决方案

    我试图编制一个列表并按类型对问题进行分类。 下面的列表可能不会更新,请参阅上面的文件名。 树木 将二叉树展平到链表 路径和 路径求和 II 二叉树的最小深度 二叉树的最大深度 将排序数组转换为二叉搜索树 将排序...

    leetcode浇花-LeetCode:LeetCode培训将于2018年6月21日开始

    leetcode 浇花 :large_orange_diamond: LeetCode 训练练习网页供复习 为每个问题提供解决方案,包括不同的语言和不同的想法 挑战正在进行 ...的最大和子数组(简单) 给定总和的最小子数组(简单) 具有 K 个

    leetcode分类-Leetcode:练习编码面试问题

    根到叶数求和 成对交换节点 对称树 有效回文 验证二叉搜索树 恢复 IP 地址 组合 交错字符串(dp 是最好的) 组合和II 电话号码的字母组合 词搜索 从中序和后序遍历构造二叉树 从前序和中序遍历构造二叉树 生成括号 ...

    leetcode530-Leetcode:Leetcodepython解决方案

    最小旋转排序数组 简单的 矩阵问题的扩展 难的 Breath First Search 广度优先搜索 问题 描述 锯齿形打印二叉树 周边区域(DFS 或 BFS) 二叉树右侧视图 课程安排 K 站内最便宜的航班 字梯II 删除无效括号 打印二叉树...

    算法导论中文版

    本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能...

    leetcode小岛出水口-LeetCode_upup:啥时候能刷完呢~

    leetcode小岛出水口 LeetCode_upup leetcode上面刷的题时间久了就自动没了。。。真的是!...合并两个有序数组 Easy 94 不同的二叉搜索树 Middle 95 不同的二叉搜索树 II Middle 110 平衡二叉树 Easy 123

    leetcode2sumc-Daily-Algorithm-Practice:每天练习新算法和新概念,以拓宽编程知识库

    我的方法是从各种现有的存储库和其他在线资源中收集算法,并提出我自己的解决方案。 语言 python,javascript,最终是 golang 目标话题 基本语法 二分查找 二叉搜索树 二叉树 著名算法 动态规划(Kadane 算法) 尝试...

    Leetcode扑克-Algos:我最喜欢的一些算法问题-JS&Python

    数数并说JS (备忘录) Power Set JS (子集,递归) 有效数字JS (正则表达式) Coin Change JS (组合,动态自下而上) 组字谜JS 水容器JS 第一个缺失的正JS 水果入篮JS CodeSignal 街机问题 介绍 10 - 常见字符...

    Python Cookbook

    17.6 用PySequence_Fast将Python序列转为 C数组 604 17.7 用迭代器逐个访问Python序列的元素 608 17.8 从Python可调用的C函数中返回None 611 17.9 用gdb调试动态载入的C扩展 613 17.10 调试内存问题 614 第18...

    MATLAB实现K-means聚类

    % lower 把字符串变为小号字母 strmatch 为字符串找到一个合适的匹配,并返回对应的索引 i = strmatch(lower(distance), distNames); if length(i) &gt; 1 % 大于1刚至少有一种距离 error(sprintf('Ambiguous ''...

Global site tag (gtag.js) - Google Analytics