• 单步执行的方式显示算法的工作流程


    import java.util.Scanner;
     
    import java.io.*;
    import java.math.BigDecimal;
     
    public class array1 {
     
         
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            Scanner sc=new Scanner(System.in);
            System.out.println("请输入数组的长度");
            int n=sc.nextInt();
            int array[]=new int[n];
            int array2[]=new int[n];
            System.out.println("请依次输入数组的每个值");
            for(int i=0;i<n;i++) {
                 array[i]=sc.nextInt();
            }
            for(int i=0;i<n;i++) {
                array2[i]=0;
            }
            int max;
            int[] array3=new int[2*n-1];
             
            for(int j=0;j<n;j++) {
                array3[j]=array[j];
                        }
            for(int i=n;i<2*n-1;i++)
            array3[i]=array[i-n];
            for(int i=0;i<2*n-1;i++) {
                System.out.print(array3[i]+" ");
            }
            /*当前最大子数组,从哪个到哪个,你检查了几个子数组了,还差几个。*/    
            System.out.print("
    ");
            int num=0;//数组个数。      
            System.out.println("输入0开始");
            int number=sc.nextInt();
            if(number==0) {
            for(int i=0;i<n;i++) {
                max=array3[i];
                int sum=0;
                //System.out.print("abc"+max+" ");
                int  temp=i;
                //for(int j=i;j<2*n-1;j++) {
                for(int j=i;j<=n-1+i;j++) {
                    num++;             
                    sum=sum+array3[j];             
                if((max<sum)&&(j-i+1<=n)) {
                    temp=j;
                    //System.out.println("123"+temp);              
                    max=sum;
                }  
                System.out.println("输入0执行下一步");
                int number1=sc.nextInt();
                if(number1==0) {
                System.out.println("当前执行第"+num+"步,当前正在计算第"+num+"个子数组,"+"从数"+array3[i]+"开始,"+"从数"+array3[j]+"结束,"+"当前最大子数组和为"+max+",最大子数组范围"+array3[i]+"到"+array3[temp]);
                }
                else {
                    System.out.println("输入有误,程序退出");
                    System.exit(0);
                }
                }
                                array2[i]=max; 
                    //System.out.println("def"+max);
            }
            }
            else {
                System.out.println("输入有误,程序退出");
                System.exit(0);
            }
            int k=array2[0];
            for(int i=0;i<n;i++) {
                System.out.println("ghi"+array2[i]);
            }
            for(int i=0;i<n;i++) {
                if(array2[i]>k) {
                    k=array2[i];
                }
            }
            System.out.println("最大值"+k);
        }
        }
  • 相关阅读:
    基于Metaweblog API 接口一键发布到国内外主流博客平台
    uva144 Student Grants
    Uva 10452
    Uva 439 Knight Moves
    Uva 352 The Seasonal War
    switch语句
    java——基础知识
    我的lua学习2
    codeforces 431 D. Random Task 组合数学
    codeforces 285 D. Permutation Sum 状压 dfs打表
  • 原文地址:https://www.cnblogs.com/fuheishi/p/11056544.html
Copyright © 2020-2023  润新知