蓝桥 简单杨辉三角

问题描述

杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。

  

它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加。

  

下面给出了杨辉三角形的前4行:

  

   1

  

  1 1

  

 1 2 1

  

1 3 3 1

  

给出n,输出它的前n行。

输入格式

输入包含一个数n。

输出格式

输出杨辉三角形的前n行。每一行从这一行的第一个数开始依次输出,中间使用一个空格分隔。请不要在前面输出多余的空格。

样例输入

4

样例输出

1
1 1
1 2 1
1 3 3 1

数据规模与约定

1 <= n <= 34。

 

 

 

 

#include <iostream>

using namespace std;



int main()
{
int n;
cin>>n;
int arr[n][n];
arr[0][0]=1;
for(int i=1;i<n;i++)
{
arr[i][0]=1;
arr[i][i]=1;
for(int j=1;j<i;j++)
{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
for(int i=0;i<n;i++)
{
for(int j=0;j<=i;j++)
{
cout<<arr[i][j]<<" ";
}
cout<<endl;
}
return 0;
}

 

 

 

 

### Python 实现杨辉三角蓝桥杯题目解法 #### 使用组合数计算方法 一种高效的方法是通过组合数来构建杨辉三角。由于每一项都可以表示为组合数 C(n, k),可以直接调用 `math.comb` 函数完成计算。 ```python from math import comb def pascals_triangle_combination(rows): result = [] for row_num in range(rows): # 利用组合公式C(n,k)=n!/(k!(n-k)!)生成每行数据 row = [comb(row_num, col) for col in range(row_num + 1)] result.append(row) return result ``` 这种方法简洁明了,适合处理较小规模的数据集[^2]。 #### 动态规划迭代算法 考虑到性能优化以及内存占用,在实际竞赛中更推荐采用动态规划的方式逐层构造: ```python def pascals_triangle_dp(numRows): if numRows == 0: return [] triangle = [[1]] for i in range(1, numRows): prev_row = triangle[-1] new_row = [1] * (len(prev_row)+1) for j in range(1, len(new_row)-1): new_row[j] = prev_row[j-1]+prev_row[j] triangle.append(new_row) return triangle ``` 该方案不仅实现了完整的杨辉三角结构,而且遵循了其基本性质——每个数字等于上一行相邻两数值相加的结果[^4]。 #### 对称性剪枝技巧 针对特定场景下的效率提升需求,可利用杨辉三角左右对称的特点仅保存并输出左侧部分即可满足要求: ```python def half_pascals_triangle(numRows): full_triangle = pascals_triangle_dp(numRows) half_result = [] for row in full_triangle: mid_point = len(row)//2+1 trimmed_row = row[:mid_point] half_result.append(trimmed_row) return half_result ``` 上述代码片段展示了如何基于前两种方法进一步简化存储空间的需求[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李霁明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值