题目
原题链接http://ybt.ssoier.cn:8088/problem_show.php?pid=2043【题目描述】
例5.11 打印杨辉三角形的前n(2≤n≤20)行。杨辉三角形如下图:
当n=5时
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
输出:
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
【输入】
输入行数n。
【输出】
输出如题述三角形。n行,每行各数之间用一个空格隔开。
【输入样例】
5
【输出样例】
1 1 1 1 2 1 1 3 3 1 1 4 6 4 1
审题
不难发现,每一个数字都是他的头顶数字及头顶数字左边的数字之和。换句话说,a[i][j]=a[i-1][j]+a[i-1][j-1]。
第一行无法计算,可以直接赋值。
有了这个思路,代码就很好写了。
步骤
1、定义变量、数组
int n;
int a[25][25];
2、输入
cin>>n;
a[1][1]=1;//一定不要忘记赋值,否则结果全部为0
3、循环处理每一个数
for(int i=2;i<=n;i++)//从第二行开始
{
for(int j=1;j<=i;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
4、输出
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
完整代码
#include<bits/stdc++.h>
using namespace std;
int n;
int a[25][25];
int main()
{
cin>>n;
a[1][1]=1;
for(int i=2;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
return 0;
}