zoukankan      html  css  js  c++  java
  • 求一个循环数组的最大子数组

    设计思路:依次将最后一个元素调到第一位,将各元素向后移,之后循环,形成数组长度个新的一维数组,并对每个数组求最大子数组的和,之后把每个一维数组的最大子数组的和存到一个数组A里面,对A求最大值,即为此循环数组的最大子数组;

    代码:

    package sum4;
    
    import java.util.Scanner;
    
    public class sum {
    	static int GetMaxAddOfArray(int arr[], int sz)
    	{
    		
    	    if (arr ==null || sz <= 1)
    	        return 0;
    	    int b[]=new int[arr.length];
    	    int c[]=new int[arr.length];
    	    int max=c[0];
    	    for(int a=arr.length-1;a>0;a--) {
    	    	
    	    	for(int j=0;j<arr.length;j++) {
    		    	b[j]=arr[a];
    		    	a=(a+1)%arr.length;
    	    	}
    	    	 int MAX = b[0];
    	 	     int sum = b[0];
    	 	    for (int i = 1; i < sz; i++)
    	 	    {
    	 	        if (sum < 0)
    	 	            sum = b[i];
    	 	        else
    	 	        {
    	 	            sum += b[i];
    	 	        }
    
    	 	        if (sum > MAX)
    	 	            MAX = sum;
    	 	    }
    	 	    c[a]=MAX;
    	    }
    	    for(int m=1;m<arr.length;m++) {
    	    	
    	    	if(c[m]>max)
    	    		max=c[m];
    	    }
    	    return max;
    	}
    	    
    	
    	
    		public static void main(String[] args) {
    			 Scanner input=new Scanner(System.in);
    				int n;
    				System.out.println("输入数组个数:");
    				n=input.nextInt();
    				int i;
    				int arr[]=new int[n];
    				for(i=0;i<n;i++) {
    					arr[i]=input.nextInt();
    				}
    				input.close();
    		
    				System.out.println(GetMaxAddOfArray(arr,n));
    		}
    		
    }
    

      实验截图:

  • 相关阅读:
    Linux上统计文件夹下文件个数
    linux----tail 过滤日志文件中的关键字
    Linux----Makefile
    Python--day 3
    Python--day 2
    Python--day 1
    Ubuntu14.04 64位网易云播放器
    qt 串口通信学习的目录
    qt layout 注意要点
    模拟电子第一章半导体
  • 原文地址:https://www.cnblogs.com/KYin/p/10610651.html
Copyright © 2011-2022 走看看