标签:
一、代码思想
对第一次一维数组的延伸,增加无头无尾功能,我们的设计思想是每比较一次进行一次交换,将第一个掉到位后去第二个调到第一个,第三个调到第二个,以此类推,再进行实验一的求最大子数组的和
二、代码
package com.minirisoft;
import java.util.*;
public class SuperMax
{
public static int Exchange(int arr[],int n)
{
int t;
for(int j=0;j<n-1;j++)
{
t=arr[j];
arr[j]=arr[j+1];
arr[j+1]=t;
}
return 0;
}
public static void main(String[] args)
{
Scanner sc=new Scanner(System.in);
int[] list = new int[10];//输入数组是必须先定义数组,否则出错!
int[] arr1 = new int[10];//输入数组是必须先定义数组,否则出错!
int[] arr = new int[10];//输入数组是必须先定义数组,否则出错!
System.out.println("请输入数组:");
for(int k=0;k<10;k++)
{
list[k]=sc.nextInt();
}
for(int i=0;i<10;i++)
{
Exchange(list,9);
for(int n=0;n<9;n++)
{
arr1[n]=list[n];
for(int m=n;m<9;m++)
{
arr1[m+1]=arr1[m]+list[m+1];
}
for(int m=n;m<10;m++)
{
if(arr1[m]>arr1[n])
{
arr1[n]=arr1[m];
}
}
System.out.println("从第"+(n+1)+"个元素辐射的最大子数组的和为"+arr1[n]);
}
arr1[9]=list[9];
for(int l=0;l<10;l++)
{
if(arr1[l]>arr1[0])
{
arr1[0]=arr1[l];
}
}
arr[i]=arr1[0];
System.out.println("此时最大子数组的和为"+arr1[0]);
}
for(int i=0;i<10;i++)
{
if(arr[i]>arr[0])
{
arr[0]=arr[i];
}
}
System.out.println("最终最大子数组的和为"+arr[0]);
}
}
三、实验结果




五、心得体会
这次程序是对原来程序的扩展,主要的设想在如何让数组位置轮转,起初我们俩个都有自己的实现方法,我们都一一试了,最后选择的容易实现的方法。
六、小组成员:杨广鑫,郭健豪

标签:
原文地址:http://www.cnblogs.com/tianyaguying/p/4378240.html