藍橋盃賽前基礎練習。
http://lx.lanqiao.cn/problem.page?gpid=T10
問題描述 楊輝三角形又稱Pascal三角形,它的第i+1行是(a+b)i的展開式的係數。
它的一個重要性質是:三角形中的每個數字等於它兩肩上的數字相加。 下面給出了楊輝三角形的前4行:
1
1 1
1 2 1
1 3 3 1
給出n,輸出它的前n行。
直接給出代碼吧,主要思路就是用二維數組來裝係數,i行0列全都爲1,其它部分爲a[i][j]=a[i-1][j-1] + a[i-1][j];
非遞歸代碼:
public static void printYangHuiTriangle(int n){
int[][] a = new int[n][n];//初始化元素值爲0
a[0][0] = 1;
for(int i=0;i<n;i++){
for(int j=0;j<i+1;j++){
if(j==0){
a[i][j] = 1;
}else{
a[i][j]=a[i-1][j-1] + a[i-1][j];
}
System.out.print(a[i][j]+" ");
}
System.out.println();
}
}
遞歸代碼:
//遞歸
static int[][] num;
public static void printYangHuiTriangleII(int i,int n){
if(i>=n){
return;
}
for(int j=0;j<=i;j++){
if(j==0){
num[i][j] = 1;
}else{
num[i][j] = num[i-1][j] + num[i-1][j-1];
}
System.out.print(num[i][j]+" ");
}
System.out.println();
printYangHuiTriangleII(i+1,n);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
// printYangHuiTriangle(sc.nextInt());
int n = sc.nextInt();
num = new int[n][n];
printYangHuiTriangleII(0,n);
sc.close();
}
感覺用二維數組裝那麼多0也不太好,或許可以只用一維數組就能計算出來,改天試試。