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

      

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

  • 相关阅读:
    数据库查询服务DBCacheServer
    SmallMQ实现发布
    数据库查询服务DBCacheServer
    Mysql ACID与隔离级别
    jsp拾遗
    Git项目创建与提交
    Spring Boot详细学习地址转载
    Spring Cloud微服务体系搭建
    前后端分离项目启动参考
    JVM类加载机制总结
  • 原文地址:https://www.cnblogs.com/dixingchen/p/13058924.html
Copyright © 2011-2022 走看看