• 输出每一步一维数组最大子数组和


      在二维数组的每一步运行中,都在控制台输出运行到了哪里,我的方法时添加System.out.print()。

    public class demo03 {
        public static void main(String[] args) throws IOException {
            int max= 2147483647;
            String c=null;
            Random rand = new Random();
            ArrayList<String> list = new ArrayList<String>();
            File file = new File("E:/f1.txt");
            if(!file.exists()) {
                 System.out.println("file inexists");
                 System.exit(0);
            }
            String[] split1=null;
            try {
                BufferedReader br = new BufferedReader(new FileReader(file));
                String line;
                
                while ((line = br.readLine()) != null) {
                    split1 = line.split("\s+");
                    }
                for(int i=0;i<split1.length;i++) {
                    list.add(split1[i]);
                }
                for(int i=0;i<list.size();i++) {
                    System.out.print(list.get(i)+" ");
                }
                }finally {
                     Pattern pattern = Pattern.compile("^[-\+]?[\d]*$");
                    for(int i=0;i<list.size();) {
                     boolean bool=true;
                     bool=(boolean)pattern.matcher(list.get(i)).matches();
                     String v=list.get(i);
                     if(bool==true) {
                         i++;
                     }
                     else {
                         int b=rand.nextInt(max);
                         int num=rand.nextInt(2);
                         if(num==1) {     
                                c="-"+String.valueOf(b);
                         }
                         else {
                             c=String.valueOf(b);
                         }
                        list.set(i, c);
                         System.out.println("Warning!Data not standardized.Revised:"+c);
                         i++;
                      }
                    }
                }
            /*
             * 
             * 
             * 
             */
            int q=0;
            ArrayList<Integer> array=new ArrayList<Integer>();
            int sum=0;            //子数组的和
            int x=0;
            for(int i=0;i<list.size();i++) {
                x=Integer.parseInt(list.get(i));
                array.add(x);
            }
            max=array.get(0);        //设最大子数组和为第一个
            for(int i=0;i<array.size();i++) {
                if(sum<=0) {
                    sum=array.get(i);
                    System.out.println();
                    System.out.print("第"+(i+1)+"个数是"+sum);
                    System.out.println();
                }
                else {
                    sum=sum+array.get(i);
                    System.out.println("第"+(i+1)+"个数是"+array.get(i));
                    System.out.print("第"+i+"次和是"+sum);
                    System.out.println();
                }
                if(sum>max) {
                    max=sum;
                    System.out.print("此时的子数组最大值是"+max);
                    System.out.println();
                }
                System.out.println("已检查"+(i+1)+"个数");
                /*if(i+1==array.size()) {
                    q++;
                    if(q==2) {
                        break;
                    }
                    else {
                        i=0;
                    }
                }*/
            }
            System.out.println("连续子元素的最大和为"+max);
            
        }
    
    }

    运行截图:

  • 相关阅读:
    LinkedList源码分析
    Hashtable源码分析
    String源码分析
    记一次ArrayList产生的线上OOM问题
    【spring源码分析】IOC容器初始化——查漏补缺(五)
    前端面试的那些事儿(1)~JavaScript 原始数据类型
    前端面试的那些事儿(2)~ 不再害怕被问 JavaScript 对象
    第二周技术周报-前端的自我修养
    第一周技术周报-前端框架演变
    JavaScript数据类型检测 数组(Array)检测方式
  • 原文地址:https://www.cnblogs.com/YXSZ/p/10770455.html
Copyright © 2020-2023  润新知