1. 问题描述:用队列实现分行打印(a+b)的n次方展开式系数
2. Java代码:
package boke.queue;
/**
* 分行打印(a+b)的n次方的系数
*
* @since jdk1.6
* @author 毛正吉
* @version 1.0
* @date 2010.05.25
*
*/
public class AAddBNPrint {
/**
* @param args
*/
public static void main(String[] args) {
// 测试例子
AAddBNPrint aaBNP = new AAddBNPrint();
int n = 10;
aaBNP.print(n);
}
private MyQueue mq = new MyQueue(); //FIFO队列
/**
* 打印出(a+b)的n次方的展开式的系数
* @param n
*/
public void print(int n) {
mq.makeEmpty();
mq.enQueue(new Integer(1)); // 预先放入第一行的两个系数
mq.enQueue(new Integer(1));
int s = 0; // 计算下一行系数时用到的工作单元
for (int i = 1; i <= n; i++) { // 逐行处理
System.out.println(""); // 换一行
mq.enQueue(new Integer(0)); // 各行间插入一个0
for (int j = 1; j <= i + 2; j++) { // 处理第i行的i+2个系数(包括一个0)
int t = (Integer) mq.deQueue(); // 读取一个系数
mq.enQueue(new Integer(s + t)); // 计算下一行系数,并进队列
s = t;
if (j != i + 2) { // 打印一个系数, 第i+2个是0
System.out.print(s + " ");
}
}
}
}
}
-------------------------------------------------------
package boke.queue;
import java.util.LinkedList;
/**
* 队列
*
* @since jdk1.6
* @author 毛正吉
* @version 1.0
* @date 2010.05.25
*
*/
public class MyQueue {
private LinkedList ll = new LinkedList();
/**
* 入队
*
* @param o
*/
public void enQueue(Object o) {
ll.addLast(o);
}
/**
* 出队
*
* @return
*/
public Object deQueue() {
return ll.removeFirst();
}
/**
* 队列是否为空
*
* @return
*/
public boolean isEmpty() {
return ll.isEmpty();
}
/**
* 队列置空
*/
public void makeEmpty() {
ll.clear();
}
}
3. 输出结果:
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
1 10 45 120 210 252 210 120 45 10 1
分享到:
相关推荐
循环队列的应用 — 逐行打印二项展开式 (a + b)i 的系数 循环队列是一种特殊的队列结构,它可以解决队列溢出...在这个实验中,我们使用循环队列来逐行打印二项展开式 (a + b)i 的系数,并成功地实现了循环队列的应用。
根据给定的信息,本文将详细解析“用队列实现杨辉三角的C++源程序”这一主题中的关键知识点,包括循环队列的基本概念、队列的主要操作及其在杨辉三角生成算法中的应用。 ### 循环队列的概念 循环队列是一种特殊的...
数据结构--队列实现舞伴配对问题+(舞伴程序++c++).doc
STM32F103搭载FreeRTOS系统,工程中有2个任务,任务一1秒发送一次数字至任务队列,任务二接收来自任务一和串口中断的填充数据并打印...工程将USART重定义到printf,可以使用TTL查看打印队列数据和通过串口发送队列数据
本篇介绍了如何使用C语言实现链式队列的基本操作,包括初始化队列、入队列、出队列以及销毁队列。链式队列是一种非常实用的数据结构,在实际应用中可以有效地管理动态变化的数据集。通过对这些基本操作的理解和实现...
链队列是一种基于链式结构实现的队列数据结构,其特点是存储空间可以在运行时动态扩展,不局限于预先设定的固定大小。在本题中,我们需要实现四个基本操作:初始化队列、入队列、出队列以及销毁队列。下面将详细讲解...
这个驱动程序的实现涉及到多个技术层面,包括拼音检索、环形队列、内存动态分配以及DMA(Direct Memory Access)传输。下面我们将详细探讨这些知识点。 首先,串口通信是设备间数据交换的标准方式,广泛应用于...
环形队列是一种先进先出(FIFO)的数据结构,适用于实现高效的数据缓冲。在串口通信中,当数据发送速度和接收速度不匹配时,环形队列可以起到缓冲作用。它通过循环利用数组空间,避免了数组边界问题,简化了数据的...
1.stm32f10x串口驱动程序(环形队列+内存动态分配+DMA)。2用于演示FAT文件系统。3代码具有可移植性,只需在此基础上修改便可移植其他项目。4增强串口收发数据的抗干扰能力,降低误码率。5,可以作为串口发送模板的...
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考学习...alibaba天池中间件大赛复赛百万队列基于java实现源码+学习说明.zip
在这个"单链表+顺序表+队列+栈+排序+图+二叉树+二叉排序树.zip"压缩包中,包含了多个关于数据结构实现的代码文件,它们涵盖了广泛的基本和进阶数据结构知识。 1. **单链表**:单链表是一种线性数据结构,其中的元素...
例如,你可以使用`blpop`命令在队列为空时阻塞等待,直到有新的元素加入队列,这在实现实时性要求较高的任务处理时非常有用。 在实际开发中,安装PHP-Redis扩展通常需要以下步骤: 1. 下载并编译PHP-Redis源代码,...
1.实现队列的一种存储结构 2.实现队列的相关操作 3.利用队列的操作特点,借助进队与出队操作完成打印二项式系数的任务 格式如下: 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1
在提供的"CycleBuffer"文件中,应该包含了具体的C++环形队列实现代码,通过阅读和理解这段代码,可以深入学习和掌握环形队列的内部工作原理和C++实现细节。对于进行通信开发的程序员来说,熟练掌握环形队列的使用是...
wxWidgets是wxPython的基础,它是用C++编写的,提供了大量与操作系统相关的GUI组件。 在实现"Spy++ python实现版"时,开发者需要对Windows API有深入的理解,因为Spy++的核心功能是监控和显示Windows系统的底层信息...
在这个“Linux下使用EPoll+队列+多线程的C++实现”项目中,开发者使用了`epoll`来监听并管理TCP服务器的连接。`epoll`的工作流程大致如下: 1. **创建epoll句柄**:首先,通过`epoll_create()`函数创建一个epoll...
1 默认队列 http://127.0.0.1:8000/get?data 2 自定义队列 http://127.0.0.1:8000/get?queueName=队列名称 获取队列内容: http://127.0.0.1:8000/getList?队列名称 http://127.0.0.1:8000/getList queueName ...
<项目介绍> 基于PHP+Redis实现的延时队列 -------- 不懂运行,下载完可以私聊问,可远程教学 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
### 数据结构:队列实现详解 #### 一、队列概念与特性 在计算机科学领域,**队列**是一种常见的线性数据结构,遵循先进先出(First In First Out, FIFO)的原则。也就是说,最早添加到队列中的元素将是最先被移除的...
标题中的"STM32 串口DMA不定长收发+串口打印"涉及到的是STM32微控制器在串行通信中的应用,特别是使用DMA(直接内存访问)进行数据传输,以及如何实现不定长度的数据接收和发送。STM32是意法半导体推出的一种基于ARM...