【题目描述】:
杨辉三角,又称帕斯卡三角形,是二项式系数在三角形中的一种几何排列。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
杨辉三角有多种重要的性质。
- 每个数等于它上方两数之和。
- 每行数字左右对称,由1开始逐渐变大。
- 第n行的数字有n项。
- 第n行数字和为2^{n-1}。
- 第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。
- 第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。
- (a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。 请编程写出N行杨辉三角
【输入描述】:
输入一个数N。
【输出描述】:
输出N行杨辉三角,每个数之间用一个空格隔开。
【样例输入】:
7
【样例输出】:
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
【时间限制、数据范围及描述】:
时间:1s 空间:64M
N<=50
本题就是暴力模拟:
由于不需要有严格的格式(即以屏幕正中心为对称轴),所以,可以写的很简洁。
code:
#include<stdio.h>
#include<iostream>
using namespace std;
const int N=55;
long long a[N][N];
long long n;
int main()
{
scanf("%lld",&n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
if(j==1)
a[i][j]=1;
else
if(j==i)
a[i][j]=1;//对于第一行而言,会出现两个1,但是可以在下面读入的时候只打出来第一个1。
else
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
printf("%lld ",a[i][j]);
}
printf("\n");
}
return 0;
}