杨辉三角
(a+b)^n展开,多项式展开
(a+b)^0=1
(a+b)^1=a+b
(a+b)^2=a^2+2ab+b^2
(a+b)^3=a^3+3a^2b+3ab^2+b^3
显而易见展开式的系数就是杨辉三角的每层的数
二维数组形式的杨辉三角
根据思路我们杨辉三角的特点我们不难得每一个数据
a[i][j]=a[i-1][j-1]+a[i-1][j]
下面上代码
#incldue<iostream>
using namespace std;
#define maxn 1000
int c[maxn][maxn];
int main()
{
int n;
cin>>n;
for(int i=0;i<=n;i++)
{
c[i][0] = 1;//每行第一个数和最后一个数均为1
for (int j = 1; j <= i; j++)
{
c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
}
}
for (int i = 0; i <= n; i++)
{
cout << c[i][0]<<" ";
for (int j = 1; j <= i; j++)
{
cout << c[i][j] << " ";
}
cout << endl;
}
return 0;
}
二维形式的杨辉三角计算量大,需要计算n^2个数据量时间复杂度较高O(n^2)
一维数组形式的杨辉三角
#include<iostream>
using namespace std;
#define maxn 10000
long long c[maxn][maxn];
long long c1[maxn];
int main()
{
int n;
cin >> n;
for (int j = 0; j <= n-1; j++)
{
c1[0] = 1;
for (int i = 1; i <= j; i++)
{
c1[i] = c1[i - 1] * (j - i + 1) / i;
}
for (int i = 0; i <= j; i++)
{
cout << c1[i] << " ";
}
cout << endl;
}
return 0;
}
根据展开式的递推公式得出