前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >经典算法(5)杨辉三角

经典算法(5)杨辉三角

作者头像
全栈程序员站长
发布2022-06-27 10:04:10
2420
发布2022-06-27 10:04:10
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。 这博客是对自己学习的一点点总结及记录,如果您对 Java算法 感兴趣,可以关注我的动态,我们一起学习。 用知识改变命运,让我们的家人过上更好的生活

相关文章

点此查看 【算法系列】 博客文章


目录

一、杨辉三角的介绍

百度百科对于杨辉三角是这样介绍的:

在这里插入图片描述
在这里插入图片描述

二、杨辉三角的算法思想

经典算法(5)杨辉三角
经典算法(5)杨辉三角

(此图片来源于网络)

杨辉三角的两个腰边的数都是 1,从第3行起,除第一个数和最后一个数外,其它位置的数都是上顶上两个数之和。

三、代码实现

1.第一种写法

代码语言:javascript
复制
public class YangHuiTriangle1 { 
   
    public static void main(String[] args) { 
   
        Scanner scanner = new Scanner(System.in);
        System.out.print("输入要打印的行数:");
        int n = scanner.nextInt();
        // 打印杨辉三角
        getTriangle(n);
    }

    /** * 打印杨辉三角 * * @param n 要打印的行数 * @return */
    private static int[][] getTriangle(int n) { 
   
        // 创建一个二维数组,此二维数组用来存放杨辉三角中每一行的值
        int[][] array = new int[n][n];
        // 给数组元素赋值
        for (int i = 0; i < array.length; i++) { 
   
            // 每一行的值
            array[i] = new int[i + 1];
            // 给首末元素赋值
            array[i][0] = array[i][i] = 1;
            // 给每行的非首末元素赋值
            if (i > 1) { 
   
                for (int j = 1; j < array[i].length - 1; j++) { 
   
                    array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
                }
            }
        }
        // 遍历二维数组
        for (int i = 0; i < array.length; i++) { 
   
            for (int j = 0; j < array[i].length; j++) { 
   
                System.out.print(array[i][j] + "\t");
            }
            System.out.println();
        }
        return array;
    }
}

代码执行结果:

代码语言:javascript
复制
输入要打印的行数:10
1	
1	1	
1	2	1	
1	3	3	1	
1	4	6	4	1	
1	5	10	10	5	1	
1	6	15	20	15	6	1	
1	7	21	35	35	21	7	1	
1	8	28	56	70	56	28	8	1	
1	9	36	84	126	126	84	36	9	1	

2.第二种写法

代码语言:javascript
复制
public class YangHuiTriangle2 { 
   
    public static void main(String[] args) { 
   
        Scanner scanner = new Scanner(System.in);
        System.out.println("输入要打印的行数:");
        int n = scanner.nextInt();
        // 打印杨辉三角
        int array[][] = getTriangle(n);
        // 打印成等腰三角形
        printTriangle(array);
    }

    private static int[][] getTriangle(int n) { 
   
        // 创建一个二维数组,此二维数组用来存放杨辉三角中每一行的值
        int[][] array = new int[n][n];
        // 给数组元素赋值
        for (int i = 0; i < array.length; i++) { 
   
            // 每一行的值
            array[i] = new int[i + 1];
            // 给首末元素赋值
            array[i][0] = array[i][i] = 1;
            // 给每行的非首末元素赋值
            if (i > 1) { 
   
                for (int j = 1; j < array[i].length - 1; j++) { 
   
                    array[i][j] = array[i - 1][j - 1] + array[i - 1][j];
                }
            }
        }
        return array;
    }

    /** * 打印成等腰三角形 * * @param array */
    public static void printTriangle(int[][] array) { 
   
        for (int i = 0; i < array.length; i++) { 
   
            // 输出杨辉三角数字前面的空格
            for (int j = 0; j < array.length - 1 - i; j++) { 
   
                System.out.print(" ");
            }
            for (int j = 0; j <= i; j++) { 
   
                // 用空格填补空位置
                System.out.print(" ");
                // 以十进制整数的形式输出,位宽是3,左对齐
                System.out.printf("%-3d", array[i][j]);
            }
            System.out.println();
        }
    }
}

代码执行结果:

代码语言:javascript
复制
输入要打印的行数:
10
                              1  
                           1     1  
                        1     2     1  
                     1     3     3     1  
                  1     4     6     4     1  
               1     5     10    10    5     1  
            1     6     15    20    15    6     1  
         1     7     21    35    35    21    7     1  
      1     8     28    56    70    56    28    8     1  
   1     9     36    84    126   126   84    36    9     1  

上一篇 经典算法(4)一文搞懂什么是 快速排序 下一篇 经典算法(6)斐波拉契数列、兔子繁殖、跳台阶算法

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133405.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月9,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录
  • 一、杨辉三角的介绍
  • 二、杨辉三角的算法思想
  • 三、代码实现
    • 1.第一种写法
      • 2.第二种写法
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档