洛谷P5732 【深基5.习7】杨辉三角题解

题目

【深基5.习7】杨辉三角

题目描述

给出 n ( n ≤ 20 ) n(n\le20) n(n20),输出杨辉三角的前 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行的杨辉三角。

具体的实现过程如下:

  1. 首先,从标准输入中读取一个正整数n。
  2. 计算杨辉三角的列数m,其值为2*n-1。
  3. 对于每一行i,将第n-i-1列和第n+i-1列的元素设为1。这是杨辉三角的边界条件。
  4. 从第2行开始,对于每一行i,从n-i+1列到n-2+i列,逐列计算杨辉三角中的元素。计算方法是该位置的元素等于它上方两个元素的和。
  5. 输出杨辉三角的结果。对于每一行i,从第n-i-1列到第n-i+1列,逐列输出元素。需要注意的是,每一行的输出元素个数为i+1。
  6. 程序结束。

亲测

亲测 AC
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Python_enjoy/article/details/133488725