zoukankan      html  css  js  c++  java
  • 单步查询--数组续

    用户需求&功能介绍

    1. 用户用你的程序读入一个数组文件 (就像我们以前做过的那样),显示初始状态 (就像围棋打谱程序那样)
    
     1.1. 用户也可以自行定义数组的大小,或者要求随机生成一个数字矩阵。
    
    2. 用户这时候有两个选择
    
     2.1  按 单步执行 键, 在 GUI 看到你的程序是如何一步一步算出目前最大子数组的范围,当前计算到的临时子数组是在哪里,等等。 最好用不同的颜色标识不同的状态。
    
     2.2  按 自动运行 键, 在 GUI 看到程序自动运行,并自动显示过程, 每次改变状态的时候要稍作停留 (例如 1 秒钟的时间)
    
    3.  这时最好有一个 倒带 / 回滚 的键, 让用户可以看清楚关键的几步。
    
    (当然,用户可以选择是普通模式还是扩展定义的连通模式)
    

      

    以上是老师所描述的用户需求

    我认为,这个东西很简单

    首先调出原来的程序代码,由于重装电脑,需要重新在控制台设置,import。

    然后根据我的想法我仅仅插入了一些输出代码,以及定义了一个定义。

    {        System.out.print("当前是第"+i+""+"已检查"+i+"个数组");
              System.out.println();
              System.out.print("最大子数组之和是"+max);
              System.out.println();
              if (sum=sum1)
                      {
                  System.out.print("这个数组是从第"+1+"组到第"+i+"");
                      }
              System.out.print("这个数组是从第"+1+"组到第"+i+"");
              System.out.println();
              System.out.print("当前计算到的临时子数组是"+array[i]);
              System.out.println();
              System.out.println();
              //组成这个子数组的是“”
              //当前已查看子数组有“”
          }
          System.out.println();
          System.out.print("最大子数组之和为:");
          return max;    

    然后我现在只能实现第一个,全部导出,无法进行回滚。不会滚。

    其他的东西需要进一步的思考,研究,目前就这样了。以下是这个的完整代码

    //这段代码不能说是出自我手,毕竟是参考了一个网上的教程后才能写出来的,最开始我是万万写不出来的,还需要加油。
    package zhengxingshuzu;
    
    public class Zxsz {
      public static void main(String[] args) {
          // TODO Auto-generated method stub
        int array[] = {0,1,-6,3,-5,7,1,-9,5,10,5,-10,-5,-1,5,-5,-1,2,-1,-6};
        System.out.println(findMax(array));
      }
      public static int findMax(int array[]){
          //加上约束条件,防止当数组为空时造成数组越界
          if (array.length == 0) {
              return 0;
          }
          int max = array[0];
          int sum = 0;
          //int sum1=array[i-1];
          for(int i=1; i<array.length; i++){
              //如果加上某个元素sum>=0的话,就加;
              if(sum >= 0) {
                  sum += array[i];
              }
              //当数组全为负数的时候只要有加法就一定比原来的数小,此时就相当于找出数组内最大的数
              else{
                  sum = array[i]; //否则从当前位置重新计算
              }
              if(sum > max){
                  max = sum;
              }
              System.out.print("当前是第"+i+""+"已检查"+i+"个数组");
              System.out.println();
              System.out.print("最大子数组之和是"+max);
              System.out.println();
             // if (sum=sum1)
            //          {
                //  System.out.print("这个数组是从第"+1+"组到第"+i+"组");
                    //  }
              System.out.print("这个数组是从第"+1+"组到第"+i+"");
              System.out.println();
              System.out.print("当前计算到的临时子数组是"+array[i]);
              System.out.println();
              System.out.println();
              //组成这个子数组的是“”
              //当前已查看子数组有“”
          }
          System.out.println();
          System.out.print("最大子数组之和为:");
          return max;
      }
    }

    以及运行截图

  • 相关阅读:
    背水一战 Windows 10 (61)
    背水一战 Windows 10 (60)
    背水一战 Windows 10 (59)
    背水一战 Windows 10 (58)
    背水一战 Windows 10 (57)
    背水一战 Windows 10 (56)
    背水一战 Windows 10 (55)
    背水一战 Windows 10 (54)
    背水一战 Windows 10 (53)
    背水一战 Windows 10 (52)
  • 原文地址:https://www.cnblogs.com/kmxbf2292/p/10770452.html
Copyright © 2011-2022 走看看