题面:
杨辉三角形是一种“有趣”的三角形。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。下面给出了杨辉三角形的前5行:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
现在给出n,请你输出它的前n行。
思路:根据杨辉三角形的性质,我们可以根据前一行求得下一行。具体来说,下一行每个位置的数字都等于前一行它两肩上的数字之和,同时每行开头和结尾都是1。因此,我们可以先初始化第一行,然后按照上述规律求得接下来的每一行。
代码实现如下:
#include <bits/stdc++.h>
using namespace std;
int num[25][25] = {1};
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j++)
num[i][j] = num[i - 1][j] + num[i - 1][j - 1];
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
cout << num[i][j];
if (j < i)
cout << " ";
}
cout << endl;
}
return 0;
}
运行结果:
(假设n=10)
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1