题目描述
给出 n ( n ≤ 20 ) n(n\le20) n(n≤20),输出杨辉三角的前 n n n 行。
如果你不知道什么是杨辉三角,可以观察样例找找规律。
输入格式
输出格式
样例 #1
样例输入 #1
6
样例输出 #1
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1.题目分析
考试的时候遇到过,当时没做出来,泪目。。。
定义一个二维数组能够很华丽的解决,主要是要发现其中的数学规律:
任意一行相邻两个数之和都等于两个数右下角的那个数,也就是个倒三角的图形。
2.题目思路
定义一个二维数组,将元素初始化为0。给第一行第二列赋值为1,值得一提的是,这里是故意在所有元素前面空了一列零,是方便在循环插入数据的时候,使用上述数据规律计算。
将和赋值给数组元素后,直接遍历打印非零元素即可。
3.代码演示
#include <stdio.h>int main() {int n;scanf("%d", &n);int arr[21][21] = {0};//给第一行赋值为1arr[0][1] = 1;for (int i = 0; i < n; ++i) {for (int j = 0; j < n; ++j) {//数学关系:任意一行相邻数相加等于右边的数的正下方的数arr[i + 1][j + 1] = arr[i][j] + arr[i][j + 1];}}//遍历数组,打印结果for (int i = 0; i < n; ++i) {for (int j = 1; j < n + 1; ++j) {//打印非零元素if (arr[i][j] != 0) {printf("%d ", arr[i][j]);}}printf("\n");}return 0;
}