杨辉三角是二项式系数在三角形中的一种几何排列。如下展示:
1 n=1
1 1 n=2
1 2 1 n=3
1 3 3 1 n=4
1 4 6 4 1 n=5
... ...
其特点是:每一行的第一个和最后一个都是1,每个数等于它上方两个数之和。
利用C++实现杨辉三角的打印输出:
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int n;
cin>>n; //打印几行
//int row=n, col=n;
vector<int> v(n, 0);
for(int row=1; row<=n; row++) //1~n行
{
for(int i=n-row; i>0; i--)
{
cout<<" ";
}
v[0] = 1; //第row行第一个位置
v[row-1] = 1; //第row行最后一个位置
for(int col=row-2; col>0; col--)
{
v[col] = v[col-1] + v[col]; //其余位置(从第3行开始)
}
for(int i=0; i<row; i++)
{
cout<<v[i]<<" ";
}
cout<<endl;
}
return 0;
}
组合数公式计算:
#include<iostream>
using namespace std;
/*
求 C(a, b),
C(a, b) = [a*(a-1)*(a-2)*...*(a-(b-1))] / [b!]
*/
long long C(int a, int b)
{
long long ans = 1;
for(int i=a,j=1; j<=b; i--,j++)
{
ans = ans * i / j;
}
return ans;
}
int main()
{
int a, b;
cin>>a>>b;
long long ans = C(a, b);
cout<<ans<<endl;
return 0;
}