zoukankan      html  css  js  c++  java
  • 关于打印杨辉三角等系列问题的思考

    1.把大象放进冰箱

    在进入正题之前,我们首先要知道如何把大象放进冰箱中。

    1. 把冰箱门打开(这里我们已经有冰箱了,如果没有我们还要准备一个合适的冰箱)
    2. 把大象放进去  (这里具体的方法有很多种,具体情况具体分析)
    3. 把冰箱门关上(后续的处理工作)

    这个看似荒诞的问题,给我一种启示:把一个看似完成的不了的任务,拆解为可以完成的小任务,往往是有效的。

    2.杨辉三角问题

    对于初学编程的同学,在学习流程控制的时候,通常都会学习打印图形的练习。

    同样对于编程老鸟来说,再次看到这些基础的问题,也会觉得头大。

    A:这是都是什么鬼?
    B:这问题再学我就要去世了!
    C:别问,问就不会。
    D:大象都能放进冰箱,这问题so easy,那不就是两行代码一梭子的事情
    E:对对对,写代码也没那么难么

    无论是新手的困惑,老鸟的头大,或者是大佬的不屑。

    在面对这种看似复杂难以解决的问题的时候,我们不妨按照大象放进冰箱的思路来解决类似的问题。

    /**
     * 以经典的杨辉三角为例,梳理解决思路和思维方式
     * 通常说把大象放冰箱分为三步骤,
     * ①把冰箱门打开(选择合适数据类型的变量声明并初始化)
     * ②把大象放进去(分析规律,把数据放进来,赋值操作)
     * ③把冰箱门关上(展示效果,把数据遍历展示)
     *
     * @author masting
     * @fileName YangHuiTest
     * @description
     * @date 2020/8/8 13:50
     */
    public class YangHuiTest {
        public static void main(String[] args) {
            //1.准备冰箱,把门打开(创建二维数组变量的声明并动态初始化)
            int num=10;//输出10行
            int [][] yangHui=new int[num][];
            //2.把大象放进去(变量赋值:通常二维数组以行列来处理)       
            for(int i=0;i<yangHui.length;i++){
                //2.1每行数据的长度(二维数组内层数组赋值)i
                yangHui[i]=new int[i+1];
                //2.2每行的首尾特殊数据的处理;
                yangHui[i][0]=yangHui[i][i]=1;
                //2.3内层数组列,有规律的特殊数据赋值
                for(int j=1;j<yangHui[i].length-1;j++){
                    //重点就是找出特殊数据的规律(找到规律带入这么模板就可以了)
                    yangHui[i][j]=yangHui[i-1][j-1]+yangHui[i-1][j];
                }
            }
            //3.把冰箱门关上(遍历输出,展示效果)
            for(int i=0;i<yangHui.length;i++){
                for(int j=0;j<yangHui[i].length;j++){
                    //每列不换行
                    System.out.print(yangHui[i][j]+" ");
                }
                //每行结束换行
                System.out.println();
            }
        }
    }

    3.总结

    适合简单的有规律的二维数组打印,如果是复杂的情况。虽然写法不是这样的,但是思路也是把难的任务拆解为简单的任务来实现。

    算法的雏形,多刷题,多练习。

  • 相关阅读:
    第七节:详细讲解Java中的日期,java.util.date
    第七节:详细讲解Java中的日期,java.util.date
    第六节:详细讲解Java中的装箱与拆箱及其字符串
    第六节:详细讲解Java中的装箱与拆箱及其字符串
    第五节:详细讲解Java中的接口与继承
    第五节:详细讲解Java中的接口与继承
    第四节:详细讲解Java中的类和面向对象思想
    第四节:详细讲解Java中的类和面向对象思想
    第三节:带你详解Java的操作符,控制流程以及数组
    第三节:带你详解Java的操作符,控制流程以及数组
  • 原文地址:https://www.cnblogs.com/masting/p/13458841.html
Copyright © 2011-2022 走看看