问题描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。
它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
输入格式
输入包含一个数n。
输出格式
输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。
样例输入
4
样例输出
1
1 1
1 2 1
1 3 3 1
1 1
1 2 1
1 3 3 1
数据规模与约定
1 <= n <= 34。
--------------------------------------------------------------------------
我们很容易就可以看出 三角形的边上的数字都是1 其他的数字是肩上的两个数字的和
首先我们定义一个二维数组a ,用2个for语句给a[i][0]和a[i][i]赋值为1,即三角形边上的数字都是1
然后再用2个for语句给除了a[i][0]和a[i][i]的元素赋值, 让a[i][j] = a[i-1][j-1]+a[i-1][j]
import java.util.Scanner;
public class Main{
static int[][] getTriangle(int num){
int[][] a = new int [num][num];
for(int i=0 ; i<a.length ; i++){
a[i][0] = 1;
a[i][i] = 1;
}
for(int i=1 ; i<a.length ; i++){
for(int j=1; j<=i ; j++){
a[i][j] = a[i-1][j-1]+a[i-1][j];
}
}
return a;
}
static void print(int[][]ary){
for(int i=0 ; i<ary.length ; i++){
for(int j=0 ; j<=i ; j++){
System.out.print(ary[i][j]+" ");
}
System.out.println(); //注意换行语句的位置
}
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][]a = getTriangle(n);
print(a);
}
}
其中要赋值输出的时候要注意for语句中 i 和 j 的范围控制