您的位置:首页 > 其它

子数组问题2

2016-04-15 16:39 288 查看
一、题目

返回一个一维整数数组中最大子数组的和。

二、设计思路:

1、先输入要输入的元素的个数。

2、构建两个INT类型的字数组,一个来存放数字,一个作为临时数组。

3、把输入的数组首尾相接

4、遇见正数就存放到临时数组里,并继续往下加,只要结果是正就继续存放。直到遇见负数,截断处理。

5、如果输入的数都是负数,就在原数组里排序。否则在存放数组里排序

5、把临时数组里的数排序,输出。

三、源代码:

//20142984程憧憬
//首尾相接求最大字数组和
import java.util.Scanner;
public class Arraysum {

public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner in=new Scanner(System.in);
System.out.println("请输入数组长度");
int n = in.nextInt();
int Array1[]=new int [2*n-1];
int Array2[]=new int [2*n];
int k=1;
for(int i=0;i<n;i++)
{
Array1[i]=in.nextInt();
if(Array1[i]>0)
k =0;
}
for(int i=0;i<n;i++)
{
Array1[n-1+i]=Array1[n-1-i];
}
if(k==0)
{
int d=0;
int count=0 ;
for(int i=0;i<2*n-2;i++)
{
d=d+Array1[i];
if(d<=0)
{
d=Array1[i+1];
Array1[i+1]=0;
}

if(d>0)
{
Array2[count]=d;
count++;
}

}

for(int j=0;j<count-1;j++)
for(int i=0;i<count-1-j;i++)
{   if(Array2[i]>Array2[i+1])
{
int temp;
temp=Array2[i];Array2[i]=Array2[i+1];Array2[i+1]=temp;
}
}

System.out.println(Array2[count-1]);
}

if(k==1)
{
for(int j=0;j<2*n-2;j++)
for(int i=0;i<2*n-2-j;i++)
{
if(Array1[i]>Array1[i+1])
{
int temp;
temp=Array1[i];Array1[i]=Array1[i+1];Array1[i+1]=temp;
}
}
System.out.println(Array1[2*n-2]);
}
}
}


四、截图:







内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: