关于打印杨辉三角等系列问题的思考

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.总结

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

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

posted @ 2020-08-08 18:14  Masting  阅读(179)  评论(0编辑  收藏  举报