C++实现输出杨辉三角第n行元素的代码及分析
### 🔍思路分析 要输出杨辉三角的第 `n` 行元素,我们可以利用杨辉三角的性质:每一行的第一个和最后一个元素都是 1,其余元素是上一行相邻两个元素之和。我们可以通过循环来逐行生成杨辉三角,直到生成第 `n` 行。 ### 💻代码实现 ```cpp #include <iostream> #include <vector> using namespace std; // 函数用于生成杨辉三角的第 n 行 vector<int> getRow(int n) { vector<int> row(n, 0); for (int i = 0; i < n; ++i) { // 每一行的第一个和最后一个元素为 1 row[0] = 1; row[i] = 1; // 计算中间元素,从后往前计算,避免覆盖之前的值 for (int j = i - 1; j > 0; --j) { row[j] = row[j - 1] + row[j]; } } return row; } int main() { int n; // 读取输入的 n cin >> n; // 调用函数生成第 n 行 vector<int> result = getRow(n); // 输出第 n 行的元素 for (int i = 0; i < n; ++i) { if (i > 0) { cout << " "; } cout << result[i]; } cout << endl; return 0; } ``` ### 📝代码解释 1. **`getRow` 函数**: - 该函数接受一个整数 `n` 作为参数,返回一个包含杨辉三角第 `n` 行元素的向量。 - 首先,创建一个长度为 `n` 的向量 `row`,并初始化为 0。 - 外层循环控制行数,从第 0 行开始到第 `n - 1` 行。 - 对于每一行,将第一个和最后一个元素置为 1。 - 内层循环从后往前计算中间元素,每个中间元素等于上一行相邻两个元素之和。 2. **`main` 函数**: - 读取用户输入的整数 `n`。 - 调用 `getRow` 函数生成第 `n` 行的元素。 - 遍历生成的向量,输出第 `n` 行的元素,元素之间用空格分隔。 ### ⚙️复杂度分析 - **时间复杂度**:$O(n^2)$,因为需要两层循环来生成第 `n` 行的元素。 - **空间复杂度**:$O(n)$,主要用于存储第 `n` 行的元素。 ### 💡开发建议 - **边界条件检查**:在实际应用中,可以添加对输入 `n` 的边界条件检查,确保 `n` 在合理范围内(本题要求 `n < 30`)。 - **代码复用**:可以将生成杨辉三角的部分封装成一个单独的类或函数,方便在其他地方复用。 - **性能优化**:如果需要频繁获取不同行的杨辉三角元素,可以考虑提前缓存所有行的元素,避免重复计算。 ######[AI写代码神器 | 779点数解答 | 2026-07-10 20:29:14]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)516
- C++实现支持四则运算的简单计算器,处理除数为0和无效操作(字节豆包 | 241点数解答 | 2025-10-29 20:21:29)101
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)381
- 深度剖析:游戏中两个 Buff 效果的触发条件、逻辑及注意要点 (阿里通义 | 566点数解答 | 2024-11-26 14:24:12)307
- 深度剖析 Vue 2 插槽:从基础使用到高级玩法(字节豆包 | 165点数解答 | 2024-11-29 11:25:06)256
- C语言破解甲乙丙真假话谜题:开发中需留意的三大要点(字节豆包 | 444点数解答 | 2025-11-24 00:10:58)91
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)435
- jQuery 实现动态操作 DOM:打造可增删任务的待办事项列表应用(百度文心 | 1015点数解答 | 2024-10-26 23:41:22)484
- jQuery 打造实用待办事项列表:输入添加、点击删除一步到位!(阿里通义 | 1139点数解答 | 2024-10-29 08:44:48)405
- jQuery 实现动态操作 DOM:打造带添加与删除功能的待办事项列表应用(阿里通义 | 687点数解答 | 2024-10-29 09:25:06)414
- 用 JS 中 for 循环实现 1 到 100 相加并输出结果到页面的完整代码 ( | 240点数解答 | 2024-05-20 22:11:29)569
- 用 JS 的 while 循环实现 1 到 100 相加并输出到页面的代码揭秘( | 47点数解答 | 2024-05-20 22:16:48)440