zoukankan      html  css  js  c++  java
  • 求一维联通数组的最大子数组之和

    上课时我们讨论了很久如何将带子剪开,剪开后的数组长度是多少。后来采用了直接遍历,列出各个数组再相加的方式

    代码:

    import java.io.*;
    import java.util.Scanner;
    
    
    public class Array {
    
        /**
         * @param args
         * @throws IOException 
         */
        public static void main(String[] args) throws IOException {
            // TODO Auto-generated method stub
    
            Scanner in=new Scanner(System.in);
            int n;
            System.out.println("输入数组元素个数");
            n=in.nextInt();
            int []array=new int[n];
            System.out.println("输入数组元素");
            for(int i=0;i<n;i++)
            {
                array[i]=in.nextInt();
            }
            int []doubleArray=new int[2*n];
            for(int i=0;i<n;i++)
            {
                doubleArray[i]=array[i];
            }
            for(int j=0;j<n;j++)
            {
                doubleArray[j+n]=array[j];
            }
            //验证doubleArray在排列上是否为array数组*2
            /*for(int m=0;m<2*n;m++)
            {
                System.out.print(doubleArray[m]);
            }*/
            
            //列举所有子数组和
            System.out.println("子数组的和为:");
            File file=new File("max.txt");
            FileWriter fw=new FileWriter(file);
            int max=0;
            for(int i=0;i<n;i++)
            {
                int flag=0;
                for(int j=i;j<2*n;j++)
                {
                    
                    max=max+doubleArray[j];
                    flag++;
                    System.out.print(max+" ");
                    fw.write(max+"
    ");//所有子数组的和写入max文件
                    if(flag==n)//达到数组最大长度跳出循环
                        break;
                }
                max=0;//归零
                System.out.println();
            }
            fw.close();
            System.out.println();
            //读取max文件子数组和并获取最大值
            FileReader fr=new FileReader("max.txt");
            BufferedReader br=new BufferedReader(fr);
            int[]GetMax=new int[n*n];
            String line;
            int j = 0;
            while((line=br.readLine())!=null)
            {
                GetMax[j++]=Integer.parseInt(line);    
            }
            br.close();
            int SubMax=GetMax[0];
            for(int i=0;i<n*n;i++)
            {
                if(GetMax[i]>SubMax)
                    SubMax=GetMax[i];
            }
            System.out.println("子数组和最大值为"+SubMax);
        }
    
    }

  • 相关阅读:
    详解softmax函数以及相关求导过程 (转载自知乎)
    每日算法
    每日算法
    每日算法
    每日算法
    每日算法
    广度优先搜索算法
    java实现fp-growth算法
    频繁项集挖掘之Aprior和FPGrowth算法
    频繁项集挖掘之apriori和fp-growth
  • 原文地址:https://www.cnblogs.com/lzxw/p/7026100.html
Copyright © 2011-2022 走看看