問題描述
楊輝三角形又稱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,中間的項為上一行相應兩個相鄰數的和。故單列首尾,中間項另外算。
1 #include<iostream> 2 using namespace std; 3 int main(void) 4 { 5 int n; 6 cin >> n; 7 int(*arr)[34] = new int[n][34]; //創建二維數組 8 for (int i = 0; i < n; i++) //每行第一個數和最后一個數都是1 9 { 10 arr[i][0] = 1; 11 arr[i][i] = 1; 12 } 13 for (int i = 2; i < n; i++) 14 { 15 for (int j = 1; j < i; j++) 16 { 17 arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j]; //每行中間的數都是由上一行相鄰的兩個數相加而成 18 } 19 } 20 for (int i = 0; i < n; i++) 21 { 22 for (int j = 0; j <= i; j++) 23 { 24 cout << arr[i][j] << " "; 25 } 26 cout << endl; 27 } 28 delete[] arr; 29 return 0; 30 }