您的位置:首页 > 其它

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

2016-04-13 12:42 211 查看
1.设计思想  

  (1)首先创建一个一维数组a[],根据用户输入的数组长度及数组内容进行存储数据。

  (2)再定义几个变量,sum用于求和,max为和最大值,num为数组长度。

  (3)开始for循环,sum初始化为0,max初始化为a[0]。循环内容为sum+=a[i];如果sum比max大则将sum值赋给max,如果sum小于0,则定义sum=0。直至循环结束,得到最大子数组的和。

  (4)寻找a数组最小值,得到其下标j,将j值赋给t。创建数组b,进行两次循环,第一次循环i=0,每循环一次j值就增加1,b[i]=a[j],当j>=num时,第一次循环结束。进行第二次循环,令sum=0,j=0。每循环一次j值就增加1,b[i]=a[j],当j>=t时,循环结束,便成环。

  (5)开始for循环,sum初始化为0,max为未成环之前得到的最大值。循环内容为sum+=b[i];如果sum比max大则将sum值赋给max,如果sum小于0,则定义sum=0。直至循环结束,得到最大子数组的和。

2。源程序代码

package shuzu;
import java.util.Scanner;

public class DongTai01 {
public static void main(String args[])
{

Scanner num = new Scanner(System.in);
System.out.println("请输入数组的长度");
int a = num.nextInt();
int shu = a;
int[][] shuzu = new int[shu][2];
Scanner sca = new Scanner(System.in);
System.out.println("请输入" + shu +
"以内个整数");
for(int i = 0;i < shu-1;i++)
{

shuzu[i][0] = sca.nextInt();
System.out.println("你已经输入" + (i +1) + "个数" + ",还有"+(shu -i -1)+"个数");
if(i == shu-2)

{

break;

}

}
shuzu[shu-1][0] = shuzu[0][0];
for(int z = 0;z <shu;z++)
{
System.out.println(shuzu[z][0]
);
}
shuzu[0][1]=shuzu[0][0];
for(int  i = 1;i < shu;i++)
{
if(shuzu[i-1][1]<0)
{
shuzu[i][1]=shuzu[i][0];
}
if(shuzu[i-1][1]>=0)
{
shuzu[i][1] = shuzu[i-1][1]+shuzu[i][0];
}
}
int max=shuzu[0][1];
for(int i=0;i<shu;i++)
/*{

if(shuzu[i][1]>=max)
{

max=shuzu[i][1];
}
}
*/
// System.out.println("最大和为"+max);
System.out.println("各个子数组最大"+shuzu[i][1]);

}

}


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