还记得中学时候学过的杨辉三角吗?具体的定义这里不再描述,你可以参考以下的图形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
注意:从第二行开始,一行中左半边数等于左上角数和正上方数之和,右半边与左半边镜像对称,如2=1+1,3=1+2,6=3+3‘10=4+6
输入格式:
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
输出格式:
对应于每一个输入,请输出相应层数的杨辉三角。
输入样例:
在这里给出一组输入。例如:
2
输出样例:
在这里给出相应的输出。例如:
1
1 1
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin>>n;
int a[31][31];//多维数组存储
a[1][1]=1;//第一行第一个
cout<<1<<endl;
for(int t=2;t<=n;t++){
a[t][1]=1;//每一行第一个都是1
cout<<1;
for(int h=2;h<=t;h++){
if(h<=(t+1)/2)a[t][h]=a[t-1][h-1]+a[t-1][h];
//当第t行的第h个数在该行的左半边时,该位置的数为左上角的数和正上方的数之和
else a[t][h]=a[t][t+1-h];
//该行的右半边与左半边镜像对称
cout<<" "<<a[t][h];
}
cout<<endl;//记得换行
}
}