• 单步查询--数组续


    用户需求&功能介绍

    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;
      }
    }

    以及运行截图

  • 相关阅读:
    C++学习笔记-C++对C语言的扩充和增强
    C++学习笔记-C++与C语言的一些区别
    C++学习笔记-C++与C语言的一些区别
    C学习笔记-字符串处理函数
    C学习笔记-字符串处理函数
    C学习笔记-gdb
    深入理解C语言-函数指针
    深入理解C语言-函数指针
    深入理解C语言-结构体做函数参数
    async 珠峰培训node正式课笔记 【async】任务流程控制,异步流程控制
  • 原文地址:https://www.cnblogs.com/kmxbf2292/p/10770452.html
Copyright © 2020-2023  润新知