zoukankan      html  css  js  c++  java
  • 数组2

      继上次返回所有子数组中和的最大值的问题,这次是把数值扩大至百万级以上,并保证参数出错时能正常退出,从文本文件中获取数值。得到这个题目是,我首先想到的是写一个随机函数能产生任意数量的大数并能存入文本文件,然后读取这些数值并存入一个整形数组,再利用上次的算法求出所有子数组的和的最大值。但我写代码是并没有考虑输入字符串等其他不是整数的情况,而且最大值设定在了正负

    package 数组2;
    
    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.util.Random;
    import java.util.Scanner;
    
    public class shuzu2 {
        static Scanner in=new Scanner(System.in);
        public static void main (String[] args) throws IOException{
            try
            {
                File file = new File("D:\java\eclipse\数组\shuzu.txt");
                FileWriter fw = new FileWriter(file);
                BufferedWriter bw = new BufferedWriter(fw);
                Random random = new Random();
                for(int i=0;i<10000;i++)
                {
                    int randint =(int)Math.floor((random.nextDouble()*100000000.0)-50000000);
                    bw.write(String.valueOf(randint));
                    bw.newLine();
                }
                bw.close();  
                fw.close();      
            }   
            catch (Exception e)   
            {  
                e.printStackTrace();  
            }
            FileReader reader = new FileReader("D:\java\eclipse\数组\shuzu.txt");
            BufferedReader br = new BufferedReader(reader);
            String s1 = null;
            int num[]=new int[2000000];
            int i=0,n=0;
            while((s1 = br.readLine()) != null) {
                num[i]=Integer.parseInt(s1);
                n++;
                i++;
            }
            br.close();
            reader.close();
            int max=0; 
            int max2=0;
            max2=num[0];
            for(int j=0;j<n;j++) {
                if(max<=0) {
                    max=num[j];
                }else {
                    max+=num[j];
                }
                if(max2<max) {
                    max2=max;
                }
            }
            System.out.println("子数组最大和为:"+max2);
        }
    }

    一亿以内。代码如下:

  • 相关阅读:
    HTML撑起浮动子元素得父元素高度
    H5弃用标签和属性
    HTML常用转义字符
    php微信公众号开发入门
    常见正则表达式总结
    解决上下两个相邻图片之间存在默认间距的问题
    移动端真机调试的两种方法
    H5使用小结
    CF 11D
    Codeforces Round #639 (Div. 2) C Hilbert's Hotel (数学)
  • 原文地址:https://www.cnblogs.com/yuanxiaochou/p/10548731.html
Copyright © 2011-2022 走看看