package queue; import java.util.concurrent.ConcurrentLinkedDeque; /** * Created by Lanxiaowei * Craated on 2016/12/12 9:03 * 求解杨辉三角的第K层的所有元素 * 使用队列求解 */ public class YHTriangleWithQueue { public static void main(String[] args) throws InterruptedException { int k = 6; int[][] nums = kTier(k); for(int j=0; j < k; j++) { System.out.print(nums[k % 2][j] + " "); } } public static int[][] kTier(int k) throws InterruptedException { int[][] nums = new int[2][k]; if(k <= 0) { throw new IllegalArgumentException("Argument k MUST be > 0."); } ConcurrentLinkedDeque<Event> queue = new ConcurrentLinkedDeque<Event>(); Event head = new Event(1,1); Event tail = new Event(); int level = 0; int pos = 0; queue.add(head); while (!queue.isEmpty()) { head = queue.getFirst(); level = head.getLevel(); pos = head.getPos(); if(pos == 1 || pos == level) { nums[level % 2][pos - 1] = 1; } else { nums[level % 2][pos - 1] = nums[(level - 1) % 2][pos - 1] + nums[(level - 1) % 2][pos - 2]; } if(level < k) { Event tt = new Event(level + 1,pos); queue.addLast(tt); if(pos == level) { Event t = new Event(tt.getLevel(),pos + 1); queue.addLast(t); } } queue.pop(); } return nums; } public static class Event { //表示第几层 private int level; //第几位 private int pos; public Event() {} public Event(int level, int pos) { this.level = level; this.pos = pos; } public int getLevel() { return level; } public void setLevel(int level) { this.level = level; } public int getPos() { return pos; } public void setPos(int pos) { this.pos = pos; } } }
相关推荐
杨辉三角在实际应用中有很多用途,如求解组合问题、解析二项式展开式等。例如,二项式定理告诉我们,任何幂次可以被看作是二项式系数的和,而这些系数正是杨辉三角中的数字。因此,杨辉三角在计算机科学中的概率论、...
1. **组合数问题**:可以利用杨辉三角求解特定的组合数问题。 2. **多项式展开**:杨辉三角可以帮助快速地计算多项式的展开形式。 3. **概率论**:在概率论中,可以通过杨辉三角来解决一些概率分布的问题。 4. **...
这里我们关注的是“杨辉三角栈”和“杨辉三角用栈”的概念,以及如何利用C++来实现这两个主题。首先,我们先来理解杨辉三角和栈的原理。 杨辉三角,又称帕斯卡三角,是一个二项式系数的图形表示,它在数学、计算机...
数据结果队列的源代码及实现。 cout请按照序号选择您所要操作的内容:"; cout元素插入队尾;"; cout查看队头元素;... cout求解杨辉三角;"; // cout搜索第I个元素的地址;"; // cout判别链表是否为空;";
使用队列求解约瑟夫环(报数问题) **任务描述**: 使用队列实现经典的约瑟夫环问题,即一群人围成一圈,按照一定规则报数,报到特定数字的人被淘汰,直到最后只剩下一个人。 **实现思路**: - **数据结构选择**...
1. **循环队列**:循环队列是数据结构中的一种,它解决了普通队列在满时无法继续插入元素的问题。通过利用数组的循环特性,当队列满时,可以通过调整队头和队尾的指针使其重新指向数组的开头,从而实现循环利用空间...
通常可以使用递推公式来求解: - $f(n, m) = 1$ 当 $n = 1$ 且 $m = 1$ - $f(n, n) = n $ - $f(n, m) = 1 + f(n, n - 1)$ 当 $n = m$ - $f(n, m) = f(n, m - 1) + f(n - m, m)$ 当 $n > m > 1$ ### 2. STL...
4.15 打印杨辉三角 4.16 复杂级数的前n项和 4.17 寻找矩阵中的“鞍点” 4.18 n阶勒让德多项式求解 4.19 递归反向输出字符串 4.20 一年中的第几天 第5章 数学趣题(一) 5.1 舍罕王的失算 5.2 求两个数的最大公约数...
15. **杨辉三角**:杨辉三角是组合数学中的重要概念,用于生成二项式系数。在C++中实现杨辉三角,可以学习递归或迭代的算法设计。 这些实验代码覆盖了C++的基础语法、面向对象编程、数据结构、算法和文件操作等多个...
- 设计并实现括号匹配算法、杨辉三角打印、迷宫问题求解、列车调度系统等。 ### 二叉树的实现和应用 **知识点概述:** 二叉树是一种非线性的数据结构,其中每个节点最多有两个子节点,通常称为左子节点和右子节点...
8. “杨辉三角”,这是一个典型的组合数学问题,可以使用递归或迭代的方法来求解,涉及到底层的二项式系数计算。 9. “Nim游戏”和“只出现一次的数字”,这两类问题通常涉及到位操作技巧,其中前者涉及到博弈论,...
涵盖了链表、数组、树、图、排序算法、动态规划、递归、循环队列、堆、栈、队列、红黑树、B 树、遍历方式、最短路径算法、堆排序、LRU 算法、二分查找、快排、杨辉三角、跳表、红黑树、链表循环判断、链表倒排、链表...
- **解答**:使用二维数组存储每一层的结果,其中`triangle[i][j]`表示第i+1行第j+1个数。可以通过迭代的方式计算每一层的值。 **实验0.3:金额的中文大写形式** - **题目**:输入一个金额数字,输出其对应的中文...
实例034 使用for循环输出杨辉三角 43 实例035 使用嵌套循环在控制台上输出 九九乘法表 44 实例036 用while循环计算1+1/2!+1/3!…1/20! 45 实例037 for循环输出空心的菱形 46 实例038 foreach循环优于for循环 47 实例...
实例017 打印杨辉三角 22 1.4 循环的数学应用 23 实例018 序列求和 23 实例019 简单的级数运算 24 实例020 用while语句求n! 25 实例021 特殊等式 26 实例022 求一个正整数的所有因子 27 实例023 ...
如2016年的"D2A组合数问题杨辉三角"中运用了组合数学的概念。 8. 算法优化技术:例如剪枝、快速幂、广搜+动态规划、单调队列、并查集等。比如2016年的"D1C换教室最短路(图论)/Dp"中涉及到了广搜与动态规划的结合...
- 队列的应用案例,如杨辉三角形、加油站模拟。 - **要求:** - 掌握栈与队列的特点。 - 熟练掌握栈的基本操作(进栈、出栈)。 - 理解递归与非递归的转换方法。 - 熟练掌握队列的基本操作(进队、出队)。 - ...