zoukankan      html  css  js  c++  java
  • 输出一个数组里最大子数组的和(文件)

    以文件形式读取数据,在控制台上输出结果。需要先建立文件再进行读取操作,将读取的数据放进特定的数组里再求和
    public class shuzhu {
        public static void main(String[] args) {
            File f1 = new File("temp.txt");
            toArrayByFileReader("temp.txt");
        }
        
        public static long[] toArrayByFileReader(String name) {
            // 使用ArrayList来存储每行读取到的字符串
            ArrayList<String> arrayList = new ArrayList<>();
            try {
                FileReader fr = new FileReader(name);
                BufferedReader bf = new BufferedReader(fr);
                String str;
                // 按行读取字符串
                while ((str = bf.readLine()) != null) {
                    arrayList.add(str);
                }
                bf.close();
                fr.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            // 对ArrayList中存储的字符串进行处理
            int length = arrayList.size();
            long[] array = new long[length];
            System.out.println("读取到的数组为:");
            for (int i = 0; i < length; i++) {
                String s = arrayList.get(i);
                array[i] = Long.parseLong(s);
                System.out.println(array[i]);
            }
            long maxsum,start;//最大子数组maxsum和开始位置值maxstart
            int i;
            maxsum = array[0];
            start = array[0];
            for(i=1;i<length;i++) {  //将最大子数组和与开始位置的值分别定义变量,让开始位置值参与循环,每次循环后更新最大子数组和的值,直到循环结束
                if(start<0) {
                    start = 0;  //如果start小于0,则另start等于0,然后start在自身基础上加上下一个数组元素
                }
                start+=array[i];  //start=strat+array[i];
                if(start>maxsum) {  
                    maxsum = start;  //再判断start与maxsum的大小,若start大于maxsum,则maxsum的值为start,start的值不变
                }
            }
            System.out.println("最大子数组的和为:");
            System.out.println(maxsum);
            // 返回数组
            return array;
        }
    }

     

     
  • 相关阅读:
    【转-整理】win764bit plsql 登录oracle11g ora-12154 问题汇总
    【转-整理】log4j 简单解释,配置
    sparsity and density
    转:Recsys2013论文导读
    学院研究生论坛-如何做研究
    推荐系统开源软件列表
    linux下如何用GDB调试c++程序
    全国大学生数据挖掘邀请赛中的NDCG
    网络科学自学资料
    科普文:从人人网看网络科学(Network Science)的X个经典问题
  • 原文地址:https://www.cnblogs.com/yishaui/p/10549058.html
Copyright © 2011-2022 走看看