杨辉三角形是长这样的一个三角形:
我们可以看到这是一个完全对称的三角形,我们再仔细观察会发现两遍都是一
我们还可以发现每层越往下越中间的树就会越大,我们仔细观察后可以发现一个原理:
所以我们可以用代码来实现一下:
我们先写c++的代码:
#include <bits/stdc++.h>
using namespace std;
int dp[100][100]; //这里初值是0
int main()
{
int n;
cin>>n;
dp[1][1]=1; //初值要设成1下面才好进行相加
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
dp[i][j]=dp[i][j]+dp[i-1][j]+dp[i-1][j-1]; //这里要 加上dp[i][j]进行对i=1的时候进行特判
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=i;j++)
{
printf("%d ",dp[i][j]);
}
printf("\n")
}
return 0;
}
接下来是python的代码:
def generate_pascal_triangle(n):
triangle = []
for i in range(n):
row = [1]
if i > 0:
last_row = triangle[i-1]
for j in range(len(last_row)-1):
row.append(last_row[j] + last_row[j+1])
row.append(1)
triangle.append(row)
return triangle
n = int(input("请输入要生成的行数:"))
triangle = generate_pascal_triangle(n)
# 输出杨辉三角形
for row in triangle:
print(" ".join(str(num) for num in row).center(n*3))