zoukankan      html  css  js  c++  java
  • 结对开发四------求一维无头数组最大子数组的和

    一、代码思想

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

    二、代码

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

     三、实验结果

    五、心得体会

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

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

  • 相关阅读:
    promise请求数据(all方法)
    右键的点击事件
    微信小程序的接口调用封装
    微信小程序HTTP接口请求封装
    微信小程序得路由跳转
    管理系统得操作与解决思路
    HTTP协议
    动态语言概述
    AsynclAwait
    三种跨域解决方案
  • 原文地址:https://www.cnblogs.com/tianyaguying/p/4378240.html
Copyright © 2011-2022 走看看