一、题目描述
杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。
下面给出了杨辉三角形的前4行:
1
1 1
1 2 1
1 3 3 1
给出n,输出它的前n行。
二、解决方法
使用二维数组,对每个一维数组的第一个赋值1,其他为0
代码如下(示例):
const int count = 34;
int n;
cin >> n;
int arr[count][count];
for (int i = 0; i < count; i++)
{
for (int j = 0; j < count; j++)
{
if (j == 0)
{
arr[i][j] = 1;
}
else
{
arr[i][j] = 0;
}
}
}
实现杨辉三角的主要思路为下一个是上俩个的和,基于这个思路,完善杨辉三角的实现
代码如下(示例):
for (int i = 1; i < count; i++)
{
for (int j = 1; j < count; j++)
{
arr[i][j] = arr[i - 1][j] + arr[i - 1][j -1];
}
}
并不需要俩边都赋值为1,j=1可以避免计算已经被赋予1的值,最后格式化输出,数组里的值为0时不需要输出,即可得到杨辉三角。
代码如下(示例):
for (int i = 0; i < n; i++)
{
for (int j = 0; j < count; j++)
{
if (arr[i][j] != 0)
{
cout << arr[i][j] << " ";
}
}
cout << endl;
}