目录
- 题目
- 【深基5.习7】杨辉三角
- 题目描述
- 输入格式
- 输出格式
- 样例 #1
- 样例输入 #1
- 样例输出 #1
- 传送门
- 代码
- 解释
- 亲测
题目
【深基5.习7】杨辉三角
题目描述
给出 n ( n ≤ 20 ) n(n\le20) n(n≤20),输出杨辉三角的前 n n n 行。
如果你不知道什么是杨辉三角,可以观察样例找找规律。
输入格式
无
输出格式
无
样例 #1
样例输入 #1
6
样例输出 #1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
传送门
https://www.luogu.com.cn/problem/P5732
代码
/*
C++程序,计算杨辉三角的前n行
*/
#include<iostream>
using namespace std;
long long arr[1005][2015], n, m, i, j, p;
int main()
{
cin >> n;
m = 2 * n - 1;
// 初始化第一行和第二行的数值
for (i = 0; i < n; i++)
{
arr[i][n - i - 1] = 1;
arr[i][n + i - 1] = 1;
}
// 计算杨辉三角的每一行
for (i = 2; i < n; i++)
{
for (j = n - i + 1; j < n - 2 + i; j = j + 2)
arr[i][j] = (arr[i - 1][j - 1] + arr[i - 1][j + 1]);
}
// 输出杨辉三角前n行的数值
for (i = 0; i < n; i++)
{
p = 1;
for (j = n - i - 1; p < i + 2; j = j + 2)
{
cout << arr[i][j] << " ";
p = p + 1;
}
cout << endl;
}
return 0;
}
解释
这段代码是一个用于生成杨辉三角的程序。杨辉三角是一个由数字排列成三角形的数列,其中每个数字等于其上方两个数字的和。代码的功能是输入一个正整数n,然后生成一个n行的杨辉三角。
具体的实现过程如下:
- 首先,从标准输入中读取一个正整数n。
- 计算杨辉三角的列数m,其值为2*n-1。
- 对于每一行i,将第n-i-1列和第n+i-1列的元素设为1。这是杨辉三角的边界条件。
- 从第2行开始,对于每一行i,从n-i+1列到n-2+i列,逐列计算杨辉三角中的元素。计算方法是该位置的元素等于它上方两个元素的和。
- 输出杨辉三角的结果。对于每一行i,从第n-i-1列到第n-i+1列,逐列输出元素。需要注意的是,每一行的输出元素个数为i+1。
- 程序结束。
亲测
亲测 AC