• 数组第三版


    这次是将数组的首尾相连,依然输出最大子数组的和,但是若最大子数组的长度大于原先的长度则不能输出。首尾相接形成循环,把这个循环展开形成一个一维数组,形成的一维数组就是将前n-1个数放在最后一个数后面,形成一个新数组,然后就可以直接用求一维数组最大子数组的方法来解决。

    源代码:

    复制代码
    package lianxi;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.math.BigInteger;
    import java.util.Scanner;
    
    public class App7 {
        public static void main(String[] args) throws IOException 
        {
            Scanner in= new Scanner(System.in);
            //writeFile();
            int hang=gethang();
            String[] num=getnum(hang);
            String[] num2=new String [hang];
            String max="0";
            BigInteger bi,bi2;
            int s;
            boolean f=false;
            for(s=0;s<num.length;s++) {
                if(num[s]==null)break;
                bi=new BigInteger (num[s]);
                if(bi.max(BigInteger.valueOf(0))!=BigInteger.valueOf(0))f=true;
            }
            if(f==true) {
            max=num[0];
            num2[0]=num[0];
            for(int i=1;i<s;i++) {
                //num2[i]=num2[i-1]+num[i];
                bi=new BigInteger (num[i]);
                bi2=new BigInteger (num2[i-1]);
                num2[i]=""+bi2.add(bi);
                if(bi.max(bi2)==bi)max=num2[i];
            }
            for(int i=0,j=0;j<s;) {            //循环减去第一个
                bi=new BigInteger (num2[i]);
                bi2=new BigInteger (num[j]);
                bi=bi.subtract(bi2);
                if(bi.max(bi2)==bi)max=num2[i];
                if(i==s-1) {j++;i=j;}
                else i++;
            }
            }
            else {
                max=num[0];
                num2[0]=num[0];
                for(int i=1;i<s;i++) {
                    num2[i]=num2[i-1]+num[i];
                    bi=new BigInteger (num[i]);
                    bi2=new BigInteger (num[i-1]);
                    if(bi.max(bi2)==bi)max=num2[i];
                }
            }
            System.out.println(max);
            //add();
            in.close();
        }
        public static int gethang() {
            int i=0;
            try (FileReader reader = new FileReader("text.txt"); 
                    BufferedReader br = new BufferedReader(reader)) 
                { 
                String line;  
                while ((line = br.readLine()) != null) {
                    i++;
                 }
                } 
                catch (IOException e)
                { 
                    e.printStackTrace(); 
                }
                return i;
        }
        public static String[] getnum(int lang) throws IOException {
            String [] in=new String[lang];
            int i=0;
            try (FileReader reader = new FileReader("text.txt"); 
                    BufferedReader br = new BufferedReader(reader)) 
                { 
                String line;  
                while ((line = br.readLine()) != null) {
                     in[i]= line;
                    i++;
                 }
                } 
                catch (IOException e)
                { 
                    e.printStackTrace(); 
                }
                return in;
        }
        
            public   void writeFile() {
                int i=0;
                int fu=0;
                try {
                    File writeName = new File("text.txt");
                    writeName.createNewFile();
                    try (FileWriter writer = new FileWriter(writeName);
                         BufferedWriter out = new BufferedWriter(writer)
                    ) {
                        for(int j=0;j<150;j++) {
                            i=1+(int)(Math.random()*9);
                            //fu=1+(int)(Math.random()*2);
                            //if(fu==1)i=0-i;
                        out.write(i+"
    "); // 
    换行
                        out.flush(); 
                        }
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            public static void add()  throws IOException {
                
                int i=0;
                try (FileReader reader = new FileReader("text.txt"); 
                        BufferedReader br = new BufferedReader(reader)) 
                    { 
                    String line;  
                    while ((line = br.readLine()) != null) {
                        
                        i+=Integer.parseInt(line);
                     }
                    } 
                    catch (IOException e)
                    { 
                        e.printStackTrace(); 
                    }
                System.out.println("sum="+i);
            }
    
    
    }
  • 相关阅读:
    软件工程概论之web基础
    java动手动脑——异常处理
    Java动手动脑——多态和继承
    java字串
    数据结构——用栈来判断回文字符串
    java一个能记录生成多少个对象的类
    openwrt设置默认登陆密码
    在ubuntu中安装luci解决iwinfo.h No such file or directory问题
    添加mysamba
    更改默认打开wifi功能
  • 原文地址:https://www.cnblogs.com/huan-ch/p/10585833.html
Copyright © 2020-2023  润新知