杨辉三角

实践练习C++17

简介

天气晴朗,你并不想在教室待一小时,却发现黑板上画着一个奇妙的三角形。等待数学老师时,你注意到:最外侧都是 1,每一行比上一行多一个数,而且左右对称。

老师到来后解释,这就是著名的帕斯卡三角形,中文常称杨辉三角。

接下来一小时,老师介绍了其中令人惊奇的规律:

  • 可以计算从 N 个元素中选择 K 个的方式数。
  • 其中包含斐波那契数列的规律。
  • 为奇数与偶数涂不同颜色,可以得到美丽的谢尔宾斯基三角形。

老师鼓励继续寻找其他用途。铃响时,你才发现自己整节课都沉浸其中。你拿出笔记本电脑走到室外,准备同时享受阳光与数学的奇妙。

任务说明

输出杨辉三角的前 N 行。

杨辉三角是由正整数组成的三角形排列。

行号从 1 开始,每行数字个数等于行号,因此第一行一个数,第二行两个数,依此类推。

最上方只有 1。后续每个位置的值,等于上一行左上与右上两个位置的和。

若上一行对应的左上或右上位置不存在,仅出现在边缘,将不存在的位置视为 0。

示例

观察前 5 行:

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

最上方的唯一数值是 1。

每行最左与最右位置只对应上一行一个有效数字,因此边缘始终是 1。

其他位置对应上一行两个数。例如第五行 1 4 6 4 1 的中间值为 6,因为上方两个数是 3 和 3: