码迷,mamicode.com
首页 > 编程语言 > 详细

课堂测试总结-数组(三)

时间:2019-03-23 22:53:53      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:自己   代码   exti   排序   []   tin   system   public   做了   

  这节课,我们在原数组的基础上做了改进,即将数组首尾相接然后求最大子数组,刚开始我看到题目时想到的是首尾相连后的新数组的子数组,并求出所有子数组得值填入新数组,并用冒泡排序进行排序,求得最大子数组的值,但是事实却繁琐,很麻烦。之后很多同学上讲台演示自己的代码,一个同学说除了自己的想法,就是将所求的数组后面再加上自己本身,但舍去最后一个值。即n-1个数。之后弄原来的办法进行求所有子数组,加入到新数组中,这样很简单,而且很明了,10分钟就完成了整个测试。源代码如下:

package test;//数组首尾相接

import java.util.Scanner;

public class shuzu3 {
public static void main(String []args)
{
Scanner s=new Scanner(System.in);
System.out.println("请输入数组数目:");
int sum=s.nextInt();
int []a=new int[sum];
System.out.println("请输入"+sum+"个数:");
for(int i=0;i<sum;i++)
{
a[i]=s.nextInt();
}
s.close();
int []b=new int[2*sum-1];
for(int i=0;i<sum;i++)
{
b[i]=a[i];
}
for(int i=sum;i<2*sum-1;i++)
{
b[i]=a[i-sum];
}
int []c=new int[sum*sum];
int temp1=0;
for(int i=0;i<sum;i++)
{
int temp=0;
for(int k=i;k<i+sum;k++)
{
temp=temp+b[k];
c[temp1]=temp;
temp1++;
}
}
for(int i=0;i<sum*sum-1;i++)
for(int k=0;k<sum*sum-1-i;k++)
{
if(c[k]<c[k+1])
{
int temp2=c[k];
c[k]=c[k+1];
c[k+1]=temp2;
}
}
System.out.println("最大的子数组和为"+c[0]);
}
}

结果:

技术图片

 

课堂测试总结-数组(三)

标签:自己   代码   exti   排序   []   tin   system   public   做了   

原文地址:https://www.cnblogs.com/jccjcc/p/10585722.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!