牛客算法基础noob51 杨辉三角
描述
杨辉三角形(又称帕斯卡三角形)的第i+1行对应二项式展开式(a+b)^i的系数。其特点是任意位置的元素等于上一行同列元素与上一行前一列元素之和。以下展示前4行示例:
1
1 1
1 2 1
1 3 3 1输入要求:
给定一个正整数n(1 ≤ n ≤ 34),输出前n行杨辉三角形。输入格式:
在一行中输入整数n输出格式:
从第一行开始逐行输出,数字间用单个空格分隔,行末不得有多余空格。
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt();
//下面数组确定有多少行,但不确定有多少列,这种写法适合每行长度不同的场景,后续可以根据需要为每行分配不同的长度int[][] arr = new int[n][];//构建杨辉三角for(int i = 0;i<n;i++){//遍历每一行//第i行(从0开始计数)有i+1个元素,所以我们先创建行//初始化第一行,长度为i+1arr[i] = new int[i+1];//控制每行的第一个元素为1arr[i][0] = 1;//每行的最后一个元素为1arr[i][i] = 1;//计算中间元素:等于上一行同列元素与上一行前一列元素之和//j = 1:从第 2 个元素开始(跳过第一个元素,因为它固定为 1)//j < i:循环到当前行的倒数第二个元素结束(跳过最后一个元素,因为它也固定为 1)for(int j = 1;j<i;j++){//当前行第 j 列的元素 = 上一行第 j-1 列的元素 + 上一行第 j 列的元素arr[i][j] = arr[i-1][j-1]+arr[i-1][j];}}//输出杨辉三角for(int i=0;i<n;i++){for(int j = 0;j<=i;j++){System.out.print(arr[i][j]);//除了最后一个元素,其他元素后加空格if(j<i){System.out.print( " " );}}System.out.println();}}
}