C++ 代码实现杨辉三角:详细解析及示例
使用 C++ 编写程序打印杨辉三角
本文将详细介绍如何使用 C++ 代码生成并打印一个十一行的杨辉三角。
代码示例:
#include <iostream>
#include <vector>
// 生成杨辉三角
std::vector<std::vector<int>> generatePascalTriangle(int numRows) {
std::vector<std::vector<int>> triangle;
if (numRows == 0)
return triangle;
triangle.push_back({1});
for (int i = 1; i < numRows; i++) {
std::vector<int> row(i + 1, 1);
for (int j = 1; j < i; j++) {
row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j];
}
triangle.push_back(row);
}
return triangle;
}
// 打印杨辉三角
void printPascalTriangle(const std::vector<std::vector<int>>& triangle) {
int numRows = triangle.size();
for (int i = 0; i < numRows; i++) {
int numSpaces = numRows - i - 1;
for (int j = 0; j < numSpaces; j++) {
std::cout << ' ';
}
for (int j = 0; j <= i; j++) {
std::cout << triangle[i][j] << ' ';
}
std::cout << std::endl;
}
}
int main() {
int numRows = 11; // 打印 11 行杨辉三角
std::vector<std::vector<int>> triangle = generatePascalTriangle(numRows);
printPascalTriangle(triangle);
return 0;
}
代码解析:
-
生成杨辉三角:
generatePascalTriangle函数接收一个整数numRows,代表要生成的杨辉三角的行数。- 函数首先创建一个空二维向量
triangle用于存储杨辉三角。 - 如果
numRows为 0,则直接返回空triangle。 - 初始化第一行
triangle.push_back({1});,因为杨辉三角的第一行只有一个数字 1。 - 循环遍历后续行,使用
row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j];计算每一行元素的值,该元素等于上一行对应位置的两个元素之和。 - 最后,返回生成的
triangle。
-
打印杨辉三角:
printPascalTriangle函数接收一个二维向量triangle,代表要打印的杨辉三角。- 循环遍历
triangle的每一行,计算每行前需要添加的空格数numSpaces = numRows - i - 1,并打印空格。 - 循环打印每一行元素,用空格隔开。
- 最后,打印一个换行符
std::endl。
-
主函数:
- 在主函数
main中,设置numRows为 11,表示要打印 11 行杨辉三角。 - 调用
generatePascalTriangle生成杨辉三角,并调用printPascalTriangle打印结果。
- 在主函数
保存代码:
您可以将以上代码保存到一个名为 pascal_triangle.cpp 的文件中。
编译和运行:
使用 C++ 编译器编译并运行该文件,即可打印出一个十一行的杨辉三角。
代码分析:
- 代码使用二维向量
std::vector<std::vector<int>>存储杨辉三角,方便进行元素访问和操作。 - 使用循环和条件语句来控制程序的逻辑流程,实现杨辉三角的生成和打印功能。
- 代码注释清晰,方便理解代码的逻辑和功能。
更多功能:
您可以根据需要修改代码,实现更多功能,例如:
- 输入任意行数,打印任意行数的杨辉三角。
- 修改打印格式,例如添加边框或修改元素间距。
- 计算杨辉三角的特定元素值。
希望本文能够帮助您理解如何使用 C++ 代码生成和打印杨辉三角,并激发您探索更多 C++ 编程的乐趣!
原文地址: https://www.cveoy.top/t/topic/bDWj 著作权归作者所有。请勿转载和采集!