题目

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

下面给出了杨辉三角形的前4行:

   1

  1 1

 1 2 1

1 3 3 1

给出n,输出它的前n行。

输入描述

输入包含一个数n。

输出描述:

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面和后面输出多余的空格。

分析:

把看结果看成一个二维数组,根据数字规律设置循环,将数组填满,在按行打印即可。

AC代码:

//利用二维数组来存放杨辉三角
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
        //n <= 34,所以设定35的二维数组,做好准备工作
        int[][] sc = new int[35][35];
         sc[1][1] = 1;
        int n = scan.nextInt();
       
        //根据规律给数组填数
        for(int i = 2 ;i <= n ; i++){
            for(int j = 1 ; j <= i ; j++){
                sc[i][j] = sc[i-1][j-1] + sc[i-1][j];                
            }
        }
       
        //按照题目要求一行一行的打印
        for(int i = 1 ; i <= n ; i++){
            for(int j = 1 ; j <= i ; j++){
                System.out.print(sc[i][j]+" ");              
                //切记此处是print,而不是println,在此不换行
            }      
            System.out.println();  
            //每行结束就换行,打印下一行,所以在内层循坏外
        }             
    } 
}