`

用队列实现分行打印(a+b)的n次方展开式系数

阅读更多
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 的系数 循环队列是一种特殊的队列结构,它可以解决队列溢出...在这个实验中,我们使用循环队列来逐行打印二项展开式 (a + b)i 的系数,并成功地实现了循环队列的应用。

    用队列实现杨辉三角的C++源程序

    根据给定的信息,本文将详细解析“用队列实现杨辉三角的C++源程序”这一主题中的关键知识点,包括循环队列的基本概念、队列的主要操作及其在杨辉三角生成算法中的应用。 ### 循环队列的概念 循环队列是一种特殊的...

    数据结构--队列实现舞伴配对问题+(舞伴程序++c++).doc

    数据结构--队列实现舞伴配对问题+(舞伴程序++c++).doc

    STM32搭载FreeRTOS实现任务+消息队列+串口通信完整项目代码[实测]

    STM32F103搭载FreeRTOS系统,工程中有2个任务,任务一1秒发送一次数字至任务队列,任务二接收来自任务一和串口中断的填充数据并打印...工程将USART重定义到printf,可以使用TTL查看打印队列数据和通过串口发送队列数据

    C语言_初始化队列+入队列+出队列+销毁队列

    本篇介绍了如何使用C语言实现链式队列的基本操作,包括初始化队列、入队列、出队列以及销毁队列。链式队列是一种非常实用的数据结构,在实际应用中可以有效地管理动态变化的数据集。通过对这些基本操作的理解和实现...

    链队列题目:初始化队列+入队列+出队列+销毁队列

    链队列是一种基于链式结构实现的队列数据结构,其特点是存储空间可以在运行时动态扩展,不局限于预先设定的固定大小。在本题中,我们需要实现四个基本操作:初始化队列、入队列、出队列以及销毁队列。下面将详细讲解...

    STM32串口驱动(拼音检索测试通过)(环形队列+内存动态分配+DMA)

    这个驱动程序的实现涉及到多个技术层面,包括拼音检索、环形队列、内存动态分配以及DMA(Direct Memory Access)传输。下面我们将详细探讨这些知识点。 首先,串口通信是设备间数据交换的标准方式,广泛应用于...

    stm32f10x串口驱动源码(环形队列+内存动态分配+DMA)串口发送模板(第三版)

    环形队列是一种先进先出(FIFO)的数据结构,适用于实现高效的数据缓冲。在串口通信中,当数据发送速度和接收速度不匹配时,环形队列可以起到缓冲作用。它通过循环利用数组空间,避免了数组边界问题,简化了数据的...

    stm32f10x串口驱动程序(环形队列+内存动态分配+DMA)

    1.stm32f10x串口驱动程序(环形队列+内存动态分配+DMA)。2用于演示FAT文件系统。3代码具有可移植性,只需在此基础上修改便可移植其他项目。4增强串口收发数据的抗干扰能力,降低误码率。5,可以作为串口发送模板的...

    alibaba天池中间件大赛复赛百万队列基于java实现源码+学习说明.zip

    【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的竞赛项目学习资料,作为参考学习...alibaba天池中间件大赛复赛百万队列基于java实现源码+学习说明.zip

    单链表+顺序表+队列+栈+排序+图+二叉树+二叉排序树.zip

    在这个"单链表+顺序表+队列+栈+排序+图+二叉树+二叉排序树.zip"压缩包中,包含了多个关于数据结构实现的代码文件,它们涵盖了广泛的基本和进阶数据结构知识。 1. **单链表**:单链表是一种线性数据结构,其中的元素...

    php队列+php-redis队列+php-redis扩展

    例如,你可以使用`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

    环形队列实现源码(c++)+通信开发必用

    在提供的"CycleBuffer"文件中,应该包含了具体的C++环形队列实现代码,通过阅读和理解这段代码,可以深入学习和掌握环形队列的内部工作原理和C++实现细节。对于进行通信开发的程序员来说,熟练掌握环形队列的使用是...

    Spy++python实现版

    wxWidgets是wxPython的基础,它是用C++编写的,提供了大量与操作系统相关的GUI组件。 在实现"Spy++ python实现版"时,开发者需要对Windows API有深入的理解,因为Spy++的核心功能是监控和显示Windows系统的底层信息...

    Linux下使用EPoll+队列+多线程的C++实现

    在这个“Linux下使用EPoll+队列+多线程的C++实现”项目中,开发者使用了`epoll`来监听并管理TCP服务器的连接。`epoll`的工作流程大致如下: 1. **创建epoll句柄**:首先,通过`epoll_create()`函数创建一个epoll...

    node.js+redis实现消息队列

    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实现的延时队列 +项目源码+文档说明

    &lt;项目介绍&gt; 基于PHP+Redis实现的延时队列 -------- 不懂运行,下载完可以私聊问,可远程教学 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------

    数据结构 队列实现 数据结构 队列实现

    ### 数据结构:队列实现详解 #### 一、队列概念与特性 在计算机科学领域,**队列**是一种常见的线性数据结构,遵循先进先出(First In First Out, FIFO)的原则。也就是说,最早添加到队列中的元素将是最先被移除的...

    STM32 串口DMA不定长收发+串口打印(更新:空闲中断队列式收发解决方案+持续接收数据后串口死机BUG优化)

    标题中的"STM32 串口DMA不定长收发+串口打印"涉及到的是STM32微控制器在串行通信中的应用,特别是使用DMA(直接内存访问)进行数据传输,以及如何实现不定长度的数据接收和发送。STM32是意法半导体推出的一种基于ARM...

Global site tag (gtag.js) - Google Analytics