利用二维数组输出杨辉三角
时间: 2024-01-12 18:46:24 浏览: 107
下面是利用二维数组输出杨辉三角的 Python 代码:
```python
n = int(input("请输入要输出的杨辉三角的行数:"))
# 创建二维数组
triangle = [[0] * n for i in range(n)]
# 初始化三角形左侧和顶部的数值为1
for i in range(n):
triangle[i][0] = 1
triangle[i][i] = 1
# 递推计算杨辉三角中的数值
for i in range(2, n):
for j in range(1, i):
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
# 输出杨辉三角
for i in range(n):
for j in range(i+1):
print(triangle[i][j], end=" ")
print()
```
运行代码,输入行数,即可输出相应行数的杨辉三角。
相关问题
二维数组输出杨辉三角
### 使用二维数组生成并输出杨辉三角
以下是基于多种编程语言的实现方式,展示如何使用二维数组来生成并打印杨辉三角。
#### C++ 实现
C++ 中可以借助 `std::vector` 动态分配二维数组存储杨辉三角的数据结构[^3]:
```cpp
#include <iostream>
#include <vector>
using namespace std;
vector<vector<int>> generatePascalsTriangle(int numRows) {
vector<vector<int>> triangle;
for (int i = 0; i < numRows; ++i) {
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 printPascalsTriangle(const vector<vector<int>>& triangle) {
for (const auto& row : triangle) {
for (const auto& num : row) {
cout << num << " ";
}
cout << endl;
}
}
int main() {
int n = 10; // 输出前 10 行
vector<vector<int>> pascalsTriangle = generatePascalsTriangle(n);
printPascalsTriangle(pascalsTriangle);
return 0;
}
```
---
#### Python 实现
Python 提供了简洁的方式来处理二维列表,适合快速生成杨辉三角[^1]:
```python
def generate_pascals_triangle(num_rows):
triangle = []
for i in range(num_rows):
row = [1] * (i + 1)
for j in range(1, i):
row[j] = triangle[i - 1][j - 1] + triangle[i - 1][j]
triangle.append(row)
return triangle
def print_pascals_triangle(triangle):
for row in triangle:
print(" ".join(map(str, row)))
if __name__ == "__main__":
n = 10 # 输出前 10 行
pascals_triangle = generate_pascals_triangle(n)
print_pascals_triangle(pascals_triangle)
```
---
#### Java 实现
Java 的二维数组可以通过静态初始化完成,也可以动态扩展以适应不同需求[^5]:
```java
public class PascalsTriangle {
public static int[][] generatePascalsTriangle(int numRows) {
int[][] triangle = new int[numRows][];
for (int i = 0; i < numRows; i++) {
triangle[i] = new int[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];
}
}
return triangle;
}
public static void printPascalsTriangle(int[][] triangle) {
for (int[] row : triangle) {
for (int num : row) {
System.out.print(num + " ");
}
System.out.println();
}
}
public static void main(String[] args) {
int n = 10; // 输出前 10 行
int[][] pascalsTriangle = generatePascalsTriangle(n);
printPascalsTriangle(pascalsTriangle);
}
}
```
---
#### C 实现
在 C 中,由于缺乏内置的动态数组支持,通常需要手动管理内存分配和释放操作[^5]:
```c
#include <stdio.h>
#include <stdlib.h>
int** generatePascalsTriangle(int numRows, int* returnSize, int** returnColumnSizes) {
*returnSize = numRows;
int** triangle = (int**)malloc(sizeof(int*) * numRows);
*returnColumnSizes = (int*)malloc(sizeof(int) * numRows);
for (int i = 0; i < numRows; i++) {
triangle[i] = (int*)malloc(sizeof(int) * (i + 1));
(*returnColumnSizes)[i] = 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];
}
}
return triangle;
}
void printPascalsTriangle(int** triangle, int numRows, int* columnSizes) {
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < columnSizes[i]; j++) {
printf("%d ", triangle[i][j]);
}
printf("\n");
}
}
int main() {
int numRows = 10;
int returnSize;
int* returnColumnSizes;
int** pascalsTriangle = generatePascalsTriangle(numRows, &returnSize, &returnColumnSizes);
printPascalsTriangle(pascalsTriangle, returnSize, returnColumnSizes);
// Free allocated memory
for (int i = 0; i < returnSize; i++) {
free(pascalsTriangle[i]);
}
free(pascalsTriangle);
free(returnColumnSizes);
return 0;
}
```
---
###
用二维数组输出杨辉三角形
要用二维数组输出杨辉三角形,可以使用动态规划的方法来实现。首先,我们需要创建一个二维数组来存储杨辉三角形的元素。然后,通过循环遍历数组,根据杨辉三角形的规律,计算每个位置上的元素值,并将其存储在数组中。最后,按照格式输出数组的内容即可。
以下是用二维数组输出杨辉三角形的示例代码:
```python
def generate_pascal_triangle(num_rows):
triangle = [ * (i + 1) for i in range(num_rows)]
for i in range(2, num_rows):
for j in range(1, i):
triangle[i][j] = triangle[i-1][j-1] + triangle[i-1][j]
return triangle
def print_pascal_triangle(triangle):
for row in triangle:
for num in row:
print(num, end=' ')
print()
num_rows = 5
triangle = generate_pascal_triangle(num_rows)
print_pascal_triangle(triangle)
```
运行以上代码,将会输出一个5行的杨辉三角形:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```
阅读全文
相关推荐













