原题链接:蓝桥杯算法提高VIP-Pascal三角
解题思路:
①编写C(n,k)函数,并不难,这里不再赘述
②编写生成Pascal三角的函数,按照格式输出即可
注意事项:
本题最难的部份应该就是格式输出问题
主要有两个格式问题
①每行中第一个输出的1前面有多少空格
②每行中除了第一个输出1之外的数的格式控制
解决:
①观察规律可发现,每行的第一个输出1前面的空格有(3*n+2 - i*3)个(n为阶数,i为行数)
②观察规律发现,每行中除了第一个输出1之外的数一共占据6个宽度,用format控制"{:>6}".format(Cnk(i,j))
参考代码:
def Cnk(n,k): #编写C(n,k)函数 num = 1 for i in range(0,k): num = num*((n-i)/(i+1)) return round(num) def Pascal(n): print('{}{}'.format(' '*(3*n+2),1)) #首先输出第0行 for i in range(1,n+1): for j in range(i+1): if j == 0: print('{}{}'.format(' '*(3*n+2 - i*3),1),end = '') #控制每行第一个输出1的格式 else: print("{:>6}".format(Cnk(i,j)),end = '') #控制每行其他输出的数的格式 print() if __name__ == '__main__': n = int(input()) Pascal(n)
0.0分
4 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复