论坛首页 Java企业应用论坛

一个道说难不难,说简单不简单的Java编程题

浏览 16378 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (2) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-05-02   最后修改:2012-05-03
有如下整数类型的数组,现在求数组里面的子数组所有元素和最大的子数组。所谓的子数组如下:
{1,2}这个可以看做是下面数组的子数组,就是元素的下表相连的元素组合而成的数组。
int arr[]={1,2,0,5,-1,-2,4,8,12};


谢谢  各位关注  ,可能是我描述不太清楚吧

就是上面这个数组arr 可以分成多个子数组

例如{1,2}就是一个子数组{2,0}也是一个子数组,当然{1}也算  只要有下标相连的数组成的,都算子数组

现在要求子数组元素的和,并且这个和是所有子数组里面最大的。


大婶们。来吧
   发表时间:2012-05-03  
....我看了题目两遍还是不明白什么意思
去 arr[] 中的元素 组成一个新的数组 。。。
找和最大
。。。。。。 做个循环 把  大于零的加一起 不就好了
0 请登录后投票
   发表时间:2012-05-03   最后修改:2012-05-03
看半天没看明白
0 请登录后投票
   发表时间:2012-05-03  
看半天没太看懂,是要求出{4,8,12}?
0 请登录后投票
   发表时间:2012-05-03  
arr算是自己子数组么?如果算的话就应该是他本身了吧。
0 请登录后投票
   发表时间:2012-05-03   最后修改:2012-05-03
这不就是ACM中比较常见的动态规划的问题么

0 请登录后投票
   发表时间:2012-05-03  
不知道{12,1}是否算子数组,如果算的话应该是{4,8,12,1,2,0,5}
0 请登录后投票
   发表时间:2012-05-03  
请大家拍砖!

package suanfa;

public class MaxSubArray {
	public static void main(String[] args) {
		int arr[] = { 1, 2, 0, -5, -1, -2, 4, 8, 12 };
		
		System.out.println(getMaxSubArray(arr));
	}

	static int getMaxSubArray(int[] arr) {
		if (arr == null || arr.length == 0) {
			return 0;
		}
		int max = arr[0];
		int start =0;
		int len = 0;
		for (int i = 0; i < arr.length; i++) {
			for (int subLen = 1; subLen <= arr.length-i; subLen++) {
				int subSum = 0;
				for (int k = i; k<subLen+i; k++) {
					subSum += arr[k];
				}
				if (subSum > max)
				{
					max = subSum;
					start = i;
					len = subLen;
				}
			}
		}
		System.out.print("子数组:{");
		for (int sub = start; sub <len+start;sub ++) {
			if (sub != len+start -1) {
				System.out.print(arr[sub] +",");
			}else {
				System.out.print(arr[sub]);
			}
		}
		System.out.println("}");
		
		return max;
	}
}
0 请登录后投票
   发表时间:2012-05-03  
ls2005nba 写道
....我看了题目两遍还是不明白什么意思
去 arr[] 中的元素 组成一个新的数组 。。。
找和最大
。。。。。。 做个循环 把  大于零的加一起 不就好了

当然不是你想的这个样子

可能是我描述的有问题
举个例子,例如数组int a={10,-90,200}
那么它的子数组可以是
{10}
{10,-90}
{10,-90,200}
{-90}
{-90,200}
{200}

当然 最大的子数组之和就是200了

0 请登录后投票
   发表时间:2012-05-03  
结果是
{2,0,5,-1,-2,4,8,12}
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics