• 求一维循环数组最大子数组


    设计思路:

    一维循环数组:一维整数组头跟尾相连形成一个环。

    问题解决方案:将一个一维数组扩大两倍,求新的数组的最大子数组即可。

    import java.io.IOException;
    
    public class xunhuanshuzu {
    
        public static void main(String[] args)throws IOException{
            int []a= {23,-12,234,-234,123,2,0,1,-1,-34};
            int n=a.length;
            int []b=new int[2*n];    
            try{
                for(int i=0;i<2*n;i++) {
                if(i<n) {
                    b[i]=a[i];
                    }
                else if(i>=n) {             
                    b[i]=a[i-n];            
                }
            }
            System.out.println("最大子数组:"+max(b));
        }catch (Exception e) {            
            System.out.println("出错");            
            e.printStackTrace();        
        }
        }
        public static int max(int a[]) {
            /**
             * 求一维数组最大子数组
             */
            int x=a.length;
            int b[][]=new int[x][x];//存子数组
            int c[]=new int[x];//存二维数组每一行的最大值
            for(int i=0;i<x;i++) {//所有子数组存入二维数组中:以第i个开头的子数组们存入第i行
                for(int j=0;j<x;j++) {//求出二维数组的一行
                    int sum=0;
                    for(int s=i;s<=j;s++){//求每一个子数组                
                    sum+=a[s];
                    }
                    b[i][j]=sum;//存子数组
                }
            };        
            for(int i=0;i<x;i++) {//i为行            
                for(int j=0;j<x;j++) {//j为列
                    if(b[i][j]>c[i]) {                
                        c[i]=b[i][j];
                    }
                }
            }
            int s=0;
            for(int i=0;i<c.length;i++) {    
                
                if(s<c[i]) {
                    s=c[i];
                }
            };
            return s;
        }
    }

    运行结果:

  • 相关阅读:
    解题报告 poj 1486
    解题报告 比赛
    解题报告 keke 的房子
    解题报告 Tree
    解题报告 聚会
    解题报告 Valentine‘s seat
    解题报告 报数
    解题报告 黑书 Water pail poi 1999
    解题报告 poj 1639
    解题报告 数数
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/10610185.html
Copyright © 2020-2023  润新知