用队列解决杨辉三角问题
来源:互联网 发布:win8优化驱动器要几遍 编辑:程序博客网 时间:2024/05/16 00:29
内容
相信大家都知道杨辉三角是什么,就不过多介绍了,这篇博客就是介绍一下,用队列来解决杨辉三角问题,编程语言是C++,代码量不多,关键的代码就20行左右,思路也很简单。
思路简介
我们用一个循环,两个队列来计算杨辉三角,第一个队列存储第i行的杨辉三角,第二个队列就用来存储第i+1行的杨辉三角,第二个队列的值由第一行队列的值推出来。这样就得到了我们想要的数据。
程序效果及代码
程序要求输入要显示的杨辉三角行数,然后显示对应的杨辉三角层数:如果有别的需求,可以稍微改一下,思路是一样的。
#include <queue>#include <iostream>using namespace std;int main(){ cout << "输入杨辉三角的阶数" << endl; int num; cin >> num; queue<int> ori; //杨辉三角第二行是2个1 ori.push(1); ori.push(1); //num - 2 表示总行数是num - 2行,少的两行是第一行和第二行 for (int i = 0; i < num - 2; i++) { queue<int> next; //next用来存取第i+1层 next.push(1); //杨辉三角每层的第一个数是1 //开始由第i行推第i+1行 while(!ori.empty()) //当第i行为空时停止 { int front = ori.front(); ori.pop(); //如果第i行的队列为空,说明第i+1行已经推导了除了最后一个元素的所有项,而杨辉三角每行的最后一个元素总是1 if (ori.empty()) next.push(1); //如果第i行还有值,进行递推(杨辉三角地推就是第i行的第k个元素加上第k+1个元素得到第i+1行的第k+1个元素) else next.push(front + ori.front()); } //把第i+1行元素赋值给第i行,进行新的循环 ori = next; } cout << "杨辉三角第" << num << "行内容如下" << endl; //展示第num行元素 while (!ori.empty()) { cout << ori.front() << " "; ori.pop(); } cout << endl;}
运行结果
输入杨辉三角的阶数6杨辉三角第6行内容如下1 5 10 10 5 1
输入杨辉三角的阶数10杨辉三角第10行内容如下1 9 36 84 126 126 84 36 9 1
阅读全文
0 0
- 用队列解决杨辉三角问题
- 用队列解决杨辉三角问题
- 用循环队列解决杨辉三角
- 用js解决杨辉三角问题
- 队列--杨辉三角
- python解决“杨辉三角”问题
- Python解决杨辉三角问题
- c语言解决杨辉三角问题
- 二维数组解决杨辉三角问题
- 用队列实现杨辉三角
- 用队列打印杨辉三角
- 用队列打印杨辉三角
- 用队列实现杨辉三角
- 用 队列 打印 杨辉三角
- 用循环队列解决二项式展开式的系数--杨辉三角
- 队列基础 (用队列打印杨辉三角)
- 【数据结构队列的应用】用队列打印杨辉三角
- 杨辉三角(队列)
- ASP.NET Core 中间件之压缩、缓存
- 结辩为什么要煽情?
- 【Java】SpringMVC实现多张图片上传实例
- 算法导论程序14-快速排序的随机化版本(Python)
- 二叉排序树数值最接近节点
- 用队列解决杨辉三角问题
- ASP.NET Core HTTP 管道中的那些事儿
- README
- 面试:----maven怎么添加自己的jar包
- Delphi XE10 给地图层上面添加Android原生控件
- 5.24~6.4-Python-语言及其应用-笔记-代码结构
- Android BIN档格式sparse 及 ext4
- 80x86的寻址方式
- 程序员如何快速准备面试中的算法