🌟 前言
Wassup guys,我是Edison😎
今天是C语言每日一练,第105天!
Let’s get it!

1. 题目描述
杨辉三角形
解题之前,我们先来了解一下杨辉三角形到底是什么?
杨辉三角形,又称帕斯卡三角形、贾宪三角形、海亚姆三角形,它的排列形如三角形。
因为首现于南宋杨辉的《详解九章算法》得名,而书中杨辉说明是引自贾宪的《释锁算书》,故又名贾宪三角形。
古代波斯数学家欧玛尔·海亚姆也描述过这个三角形。在欧洲,因为法国数学家布莱兹‧帕斯卡在1653年的《论算术三角》中首次完整论述了这个三角形,故也被称作帕斯卡三角(Pascal’s triangle)。
杨辉三角的前10行写出来如下👇
2. 解题思路
其实规律很简单,我们来看一看
在最上面一行的中央写下数字 1;
第二行,写下两个1,和上一行形成三角形;
随后的每一行,开头和最后的数字都是1,其他的每个数都是它左上方和右上方的数之和,就是说除每行最左侧与最右侧的数字以外,每个数字等于它的左上方与右上方两个数字之和。
3. 动图演示
4. 代码实现
我们通过动图可以得出以下结论👇
1、两边都是数字1;
2、从第三行开始,除了两边的数字1之外的数字都是由 “肩膀上” 的数字相加得到的。
对于算法不太熟悉的朋友,如果直接去打印,可能就比较困难,所以我们不妨拆开几步来做。
🍑 Step1
1、定义一个9行9列的二维整型数组;
2、数组所有元素都赋值为1;
3、输出数组所有元素
#include <stdio.h>
int main()
{
//定义一个9行9列的二维整型数组
int data[9][9];
int i = 0;
int j = 0;
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9; j++)
{
//数组所有元素都赋值为1
data[i][j] = 1;
}
}
//输出数组所有元素
for (i = 0; i < 9; i++)
{
for (j = 0; j < 9; j++)
{
printf("%6d", data[i][j]);
}
printf("\n");
}
return 0;
}
我们输出看一下👇

本文详细介绍了杨辉三角的数学背景及C语言实现过程,包括初始化二维数组、动态规划求解和居中打印。通过逐步讲解和代码展示,阐述了杨辉三角的构造规律,并探讨了其在数学和计算机科学中的应用,如隐藏数列、斐波那契数列等。



最低0.47元/天 解锁文章
1076





