zoukankan      html  css  js  c++  java
  • 一维最大子数组的和续

    要求:求一个一维数组的最大子数组和,并要求逐步实现,显示执行第几步,当前所处理的元素,当前子数组和,当前最大子数组和以及最大子数组和所组成的元素。

    程序思路:

    在之前已经完成了一维数组最大子数组的和,需要在for循环中加入“当前最大子数组和”,“执行到第几步”的输出语句,就能实现。

    import java.util.Scanner;
     
    public class shuzu {
        public static int maxArr(int a[]) {
            int max=a[0];
            for(int i=1;i<a.length;i++) {
                if(a[i]>max) {
                    max=a[i];
                }
            }
            return max;
             
        }
         
        public static void main(String args[]) {
            /*
             * 生成数组
             */
            System.out.println("请输入数组中数字个数");
            Scanner scan = new Scanner(System.in);
            int num = scan.nextInt();
            int[] array = new int[num];
            System.out.println("请输入"+num+"个数值");
            for(int i = 0;i < num;i++) {
                array[i] = scan.nextInt();
            }
            int lon = ((1+num)/2+1)*num;//存放所有子数组和的 数组
            int[] sum = new int[lon];
            
            int sumchangdu = 0;
            int sumchangdu1  = 0;
            /*求所有子数组的和   放进sum数组中*/
            int[] maxarr = new int[num];//存放子数组和最大值的所有组成元素的数组
            for(int i = 0;i < num;i++) {
                int[] arr = new int[num];//存放当前子数组和的所有组成元素的数组
                 
                int asum = 0;
                int changdu = 0;
                for(int j = 0; j < num - i;j++) {
                     
                    arr[changdu] = array[i+j];
                    asum = asum + array[i+j];
                    sum[sumchangdu] = asum;
                    sumchangdu1 = sumchangdu+1;
                    System.out.println("当前执行第"+sumchangdu1+"步");
                    System.out.println("第"+ sumchangdu1 +"个子数组和为:"+sum[sumchangdu]);
                    System.out.print("当前组成当前的子数组和的元素为:");
                    for(int y = 0; y < arr.length;y++) {
                        if(arr[y]!=0)
                        System.out.print(arr[y]+" ");
                    }
                    System.out.println("");
                    if(sum[sumchangdu]==maxArr(sum)) {
                         
                        for(int k =0; k < arr.length;k++)
                            maxarr[k] = arr[k];
                         
                    }
                    System.out.println("当前"+ sumchangdu1 +"个子数组和的最大值为:"+maxArr(sum));
                     
                    System.out.print("当前组成最大子数组和的元素为:");
                     
                    for(int x =0;x < maxarr.length;x++ ) {
                        if(maxarr[x]!=0)
                        System.out.print(maxarr[x]+"  ");
                         
                    }
                    System.out.println("");
                    System.out.println("输入0键开始执行下一步");
                     
                    int x = scan.nextInt();
                    if(x==0) {
                        System.out.println("--------------------------------------------");
                        sumchangdu++;
                        changdu++;
                    }
                    else {
                        System.out.println("输入有误,程序退出!");<br>                                System.exit(0);
                    }
                     
                     
                }
            }
           scan.close();
            int max = sum[0];
            for(int m = 1; m < lon;m++) {
                if(sum[m]>max)             //求sum数组最大的值
                    max = sum[m];
             
        }
            System.out.println("最大子数组和为:"+max);//输出最大的子数组和
        }
         
         
         
    }
  • 相关阅读:
    Android自定义权限和使用权限
    SendInput模拟Win(VK_LWIN)键的问题
    难以置信,根本就没拖延症!
    Android RecyclerView单击、长按事件:基于OnItemTouchListener +GestureDetector标准实现(二),封装抽取成通用工具类
    Android RecyclerView单击、长按事件标准实现:基于OnItemTouchListener + GestureDetector
    Android ViewPager Fragment使用懒加载提升性能
    Android快捷便利但不常被使用的原生工具类
    Android TextView图文混合编排
    JQuery中$.ajax()方法参数详解 及 async属性说明
    jQuery.ajaxComplete() 函数详解
  • 原文地址:https://www.cnblogs.com/yishaui/p/10771200.html
Copyright © 2011-2022 走看看