0
点赞
收藏
分享

微信扫一扫

【第19天】给定一个整数 n,请你打印出 n 层杨辉三角 | 杨辉三角的应用


​​​​

学习指引

  • ​​序、专栏前言​​
  • ​​1、什么是杨辉三角?​​
  • ​​一、【例题1】​​
  • ​​1、题目描述​​
  • ​​2、解题思路​​
  • ​​3、模板代码​​
  • ​​三、推荐专栏​​
  • ​​四、课后习题​​

序、专栏前言

   本专栏开启,目的在于帮助大家更好的掌握学习​​Java​​​,特别是一些​​Java学习者​​​难以在网上找到系统地算法学习资料帮助自身入门算法
   但最最主要的还是需要独立思考,对于本专栏的所有内容,能够进行完全掌握,自己完完全全将代码写过一遍,对于算法入门肯定是没有问题的。
   算法的学习肯定不能缺少总结,这里我推荐大家可以到​高校算法社区​将学过的知识进行打卡,以此来进行巩固以及复习。
  学好算法的唯一途径那一定是题海战略,大量练习的堆积才能练就一身本领。专栏的任何题目我将会从【题目描述】【解题思路】【模板代码】【代码解析】等四板块进行讲解。

1、什么是杨辉三角?

   说到杨辉三角,肯定要了解杨辉这个人物。他是南宋著名的数学家,而杨辉三角则是他发扬光大的。杨辉三角,是二项式系数在三角形中的一种几何排列。杨辉三角的性质非常非常重要。不过最重要的是两条性质

  1. 行的首项和末项一定为
  2. 行的第列对应的为,上面两个元素的和,公式为:
  3. 【第19天】给定一个整数 n,请你打印出 n 层杨辉三角 | 杨辉三角的应用_开发语言_06

一、【例题1】

1、题目描述

,请你打印出层杨辉三角

2、解题思路

,这非常容易爆空间。由于每一层的值只与上一层有关,我们可以考虑使用滚动数组进行优化,两个数组交替使用,空间复杂度为。另外一个需要注意的是,由于累加的和增加的非常快,所以在到达一定层数后,值可能会爆​​​int​​​,所以我们需要使用​​long​​类型。

3、模板代码

import java.util.Scanner;

public class Main {
static int N=1010;
static long[] a=new long[N];
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
a[1]=1;
System.out.println(a[1]);
for (int i = 2; i <=n; i++) {
long[] b=new long[n+1];
for (int j = 1; j <=i; j++) {
b[j]=a[j-1]+a[j];
System.out.print(b[j]+" ");
}
System.out.println();
a=b;
}
}
}

不大的情况下,我们也可以使用二维数组存储,使用公式去计算杨辉三角。

import java.util.Scanner;

public class 杨辉三角形公式 {
public static void main(String[] args) {
//这种方法可以缩短时间复杂度,而且简单,重点掌握
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] nums = new int[n][n];
for(int i=0;i<n;i++){
long a = (long) 1;
for(int j=0;j<=i;j++){
System.out.print(a+" ");
// a = a*(i-j)/(j+1)是重点
//数据过大可能溢出,用long型
a =a * (i-j)/(j+1);
}
System.out.println();
}
}
}

【第19天】给定一个整数 n,请你打印出 n 层杨辉三角 | 杨辉三角的应用_算法_13

​​​​


课后习题

序号

题目链接

难度评级

1

​​ 杨辉三角​​

2


举报

相关推荐

打印杨辉三角

杨辉三角.java

杨辉三角(Java)

杨辉三角算法

leetcode:杨辉三角

杨辉三角(java)

杨辉三角展示

0 条评论