PTA-杨辉三角

题目:

求杨辉三角的前n行数据。

输入格式:

输入n(n<10)值。

输出格式:

输出杨辉三角的前n行数据,每个数据占4列。

输入样例:

5

输出样例:

   1
   1   1
   1   2   1
   1   3   3   1
   1   4   6   4   1

分析:

  1. 初始化一个 n × n 的二维列表 a,所有元素初始值为 1。这个列表用来存储最终的结果。
  2. 通过两层循环,从 2 到 n,然后从 1 到 i,计算 a[i][j]。这个计算过程使用了动态规划的思想,具体的计算公式是 a[i][j] = a[i-1][j] + a[i-1][j-1]。这个公式表示的是,从第 i 个元素开始,选取 j 个元素的可能组合数,等于从第 i-1 个元素开始,选取 j 个元素的可能组合数加上从第 i-1 个元素开始,选取 j-1 个元素的可能组合数。
  3. 再通过两层循环,打印出 a[i][j]。打印的时候需要注意的是,每打印完一行的元素后,如果当前打印的元素所在行不是最后一行,那么需要换行。同时,在每一行的开始和结束,都需要添加两个空格以使得输出的矩阵更加整齐。

Python版本:

n = int(input())  
a = [[1] * n for _ in range(n)]  
for i in range(2, n):  
    for j in range(1, i):  
        a[i][j] = a[i-1][j] + a[i-1][j-1]  
for i in range(n):  
    for j in range(i+1):  
        print("  ", a[i][j], end="")  
        if j == i and i != n-1:  
            print()

结果:

总结:

 代码的时间复杂度是 O(n^2),空间复杂度也是 O(n^2)。这个算法的时间复杂度和空间复杂度都是比较高的,如果 n 很大,可能会导致运行速度慢或者内存不够用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值