结对开发四------求一维无头数组最大子数组的和

一、代码思想

 对第一次一维数组的延伸,增加无头无尾功能,我们的设计思想是每比较一次进行一次交换,将第一个掉到位后去第二个调到第一个,第三个调到第二个,以此类推,再进行实验一的求最大子数组的和

二、代码

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]);
	}
}

 三、实验结果

五、心得体会

这次程序是对原来程序的扩展,主要的设想在如何让数组位置轮转,起初我们俩个都有自己的实现方法,我们都一一试了,最后选择的容易实现的方法。

六、小组成员:杨广鑫,郭健豪

posted @ 2015-03-30 15:41  杨广鑫  阅读(150)  评论(1编辑  收藏  举报