java利用队列实现杨辉三角
时间: 2024-12-19 11:19:35 浏览: 10
在Java中,我们可以使用队列(Queue)数据结构来模拟构建杨辉三角的过程。杨辉三角是一个数学术术问题,它是一种二维数组,每个元素等于其上方两个元素之和。为了通过队列来生成,我们通常会维护两个指针,一个指向当前行,另一个用于存储下一行的元素。每次从队列头部取出当前行的第一个元素,并将其加入到结果列表中,然后将剩余的元素移到队列尾部,准备计算下一行。
以下是基本步骤:
1. 创建一个空队列,用于存放行的元素。
2. 首先添加两个元素到队列,代表第一行和第二行:(1),(1, 1)。
3. 使用一个循环,直到队列为空:
a. 从队列头部获取当前行的所有元素,存入结果数组。
b. 计算新行的第一个元素,通常是上一行的最后一个元素加当前行的第一个元素。
c. 将这个元素和剩下的当前行元素组成新的行,添加到队列的尾部。
4. 结果数组就形成了杨辉三角。
下面是一个简单的Java代码示例:
```java
import java.util.LinkedList;
import java.util.Queue;
public class YangHuiTriangle {
public static void main(String[] args) {
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[]{1}); // 第一行
queue.add(new int[]{1, 1}); // 第二行
while (!queue.isEmpty()) {
int[] currentRow = queue.poll(); // 获取当前行
for (int i = 0; i < currentRow.length - 1; i++) {
System.out.print(currentRow[i] + " "); // 输出前一个元素
}
System.out.print(currentRow[currentRow.length - 1]); // 输出最后一个元素
if (!queue.isEmpty()) {
System.out.println(); // 换行
int[] newRow = new int[currentRow.length + 1];
newRow[0] = currentRow[currentRow.length - 1]; // 新行第一个元素
for (int i = 1; i < newRow.length - 1; i++) {
newRow[i] = currentRow[i - 1] + currentRow[i]; // 计算其他元素
}
queue.offer(newRow); // 添加新行到队列
}
}
}
}
```
阅读全文