杨辉三角(Pascal's Triangle)是二项式系数在三角形中的一种几何排列。它具有以下特点:
例如,前5行杨辉三角如下:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
要实现杨辉三角的打印,需要解决以下问题:
a[i][j] = a[i-1][j-1] + a[i-1][j]
。
#include <stdio.h>
#define MAX_ROWS 20 // 定义最大行数
void printPascalTriangle(int rows) {
int triangle[MAX_ROWS][MAX_ROWS];
// 填充杨辉三角
for (int i = 0; i < rows; i++) {
// 每行首尾为1
triangle[i][0] = 1;
triangle[i][i] = 1;
// 计算中间的值
for (int j = 1; j < i; j++) {
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j];
}
}
// 打印杨辉三角
for (int i = 0; i < rows; i++) {
// 打印前导空格,使三角形居中
for (int space = 0; space < rows - i - 1; space++) {
printf(" ");
}
// 打印当前行的数字
for (int j = 0; j <= i; j++) {
printf("%4d", triangle[i][j]);
}
printf("\n");
}
}
int main() {
int rows;
// 输入行数
printf("请输入杨辉三角的行数(1-%d):", MAX_ROWS);
scanf("%d", &rows);
if (rows < 1 || rows > MAX_ROWS) {
printf("输入的行数无效!\n");
return 1;
}
// 打印杨辉三角
printPascalTriangle(rows);
return 0;
}
printPascalTriangle
函数:
triangle
存储杨辉三角的值。
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
。
%4d
格式化输出,确保数字对齐。
main
函数:
printPascalTriangle
函数打印杨辉三角。
请输入杨辉三角的行数(1-20):5
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
MAX_ROWS
的值,但需注意内存限制。
void printPascalTriangleOptimized(int rows) {
int prev[MAX_ROWS], curr[MAX_ROWS];
for (int i = 0; i < rows; i++) {
curr[0] = 1;
curr[i] = 1;
for (int j = 1; j < i; j++) {
curr[j] = prev[j-1] + prev[j];
}
// 打印当前行
for (int space = 0; space < rows - i - 1; space++) {
printf(" ");
}
for (int j = 0; j <= i; j++) {
printf("%4d", curr[j]);
}
printf("\n");
// 更新上一行
for (int j = 0; j <= i; j++) {
prev[j] = curr[j];
}
}
}
通过本博客,你学会了:
动手挑战:尝试修改代码,打印出前10行杨辉三角,并在评论区分享你的结果!