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

本文介绍了一个程序算法,用于在包含正数和负数的数组中找到所有正数并计算它们的和,同时输出最大和。通过输入数组作为参数,程序能够高效地实现这一功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

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);
		}		
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值