zoukankan      html  css  js  c++  java
  • 返回一个整数数组中最大子数组

    package day_2;
    import java.util.Scanner;
    
    
    public class FindMaxArry {
    		public static int max(int ans, int i) {
    		// TODO Auto-generated method stub
    	    int m;
    		if(ans>i)
    		  m=ans;
    		 else
    		  m=i;
    	   return m;         
    	}
    			
     public static void main(String[] args) {
    			     
    		  int[] a = new int[100];
    		  int i,n;
    		 System.out.println("输入数组元素个数");
    		 Scanner sc = new Scanner(System.in);
    		 n=sc.nextInt();
    		 System.out.println("请输入数组元素");
    			for(i=1;i<=n;i++) 
    			    a[i] = sc.nextInt();
    			        
    			for(i=2;i<=n;i++) {
    		         if(a[i]+a[i-1]>a[i])
    			         a[i] = a[i]+a[i-1];
    		          }
    		         
    			int ans=-10000;
    		    for(i=1;i<=n;i++)
    			    ans=max(ans,a[i]);
    		        System.out.println(ans);
    			     }
    			
    			     
    			 }
    

     

    数组拓展,如数组是环型数组,求数组中最大子数组的和。要求是每个值只能取一次。

    package day_2;
    
    import java.util.Scanner;
    
    public class FindMaxArry {
    
        public static void main(String[] args) {
                        // TODO 自动生成的方法存根
            int length;  //定义数组长度length
            int n;       //定义变化后的数组的长度
            System.out.println("数组元素个数");
            Scanner sc = new Scanner(System.in);
            length=sc.nextInt();
            n=2*length;
            
            int[] a = new int[n];
            System.out.println("数组中的元素:");
           
            for(int i=0;i<length;i++)
            {    
                 a[i] = sc.nextInt();
            }
            int max=a[0];
            int s=0;     //定义求和后的元素
            for(int i=0;i<length;i++)
             {
               s=0;
               for(int j=i;j<length+i;j++)
               {
                  s=s+a[j];
                  if(s>max)
                  {
                     max=s;
                  }
               }
              a[length+i]=a[i];            //每次将已经计算过的数放到最后
             }
            System.out.println("最大子数组的和为:"+max);
            sc.close();
        
    
        }
    
    }
    

      

    但是这个方法不符合要求,不能满足每个元素只能用一次的要求。

  • 相关阅读:
    Asp.NET 4.0 ajax实例DataView 模板编程1
    ASP.NET 4.0 Ajax 实例DataView模板编程 DEMO 下载
    部分东北话、北京话
    .NET 培训课程解析(一)
    ASP.NET 4.0 Ajax 实例DataView模板编程2
    ASP.NET Web Game 架构设计1服务器基本结构
    ASP.NET Web Game 构架设计2数据库设计
    TFS2008 基本安装
    Linux上Oracle 11g安装步骤图解
    plsql developer远程连接oracle数据库
  • 原文地址:https://www.cnblogs.com/dixingchen/p/13058924.html
Copyright © 2011-2022 走看看