用队列实现杨辉三角
来源:互联网 发布:百度里可以申请域名 编辑:程序博客网 时间:2024/05/16 05:10
如题,首先,可以从杨辉三角可以知道,它的每个数等于它上方两数之和、每行第一个数和最后一个数都是1。
那么怎么用队列去实现它呢?
首先可以想到,队首和队尾分别指向相邻的两行。每当队首出一个元素,就生成一个队尾的元素入队。
那么问题来了,杨辉三角的特性可以知道:第n行比第n-1行多一个元素,这就导致入队和出队不匹配,每行入队的元素比出队的元素多一。
解决方案是,对于每行,都先把0先入队当成这行的第一个元素。这样入队和出队就平衡了。
具体实现思路:
1. 首先让0和1入队成为第一行。
2. 对于余下的每行,先让0入队
3. 每次先出一个元素和队首元素相加,总和入队。
具体的代码实现如下:
#include <stdio.h>#define MAX 1000struct Queue{ int sq[MAX]; int Front; int Rear;}Queue;bool emty(){ if (Queue.Front == Queue.Rear) return true; else return false;}int init_queue(){ Queue.Front = 0; Queue.Rear = 0; return 0;}int in_queue(int val){ Queue.sq[Queue.Rear] = val; Queue.Rear++; return 0;}int out_queue(){ if (emty()) return -1; int v = Queue.sq[Queue.Front]; Queue.Front++; return v;}int get_first(){ return Queue.sq[Queue.Front];}int main(){ int n; scanf("%d",&n); init_queue(); in_queue(0); in_queue(1); printf("%d\n", 1); for (int i=1; i<=n; i++) { in_queue(0); for (int j=0; j<=i; j++) { int v = out_queue(); v += get_first(); in_queue(v); printf("%d ",v); } printf("\n"); } return 0;}
阅读全文
0 0
- 用队列实现杨辉三角
- 用队列实现杨辉三角
- 队列实现杨辉三角
- 用循环队列实现打印杨辉三角(数据结构)
- 用C++队列模板实现杨辉三角的输出
- 杨辉三角之c++队列实现
- 循环队列实现杨辉三角
- 循环队列实现杨辉三角
- 队列实现杨辉三角打印
- 队列实现 杨辉三角的打印
- 杨辉三角的队列实现
- 数据结构循环队列实现杨辉三角
- 队列--杨辉三角
- 用队列打印杨辉三角
- 用循环队列解决杨辉三角
- 用队列打印杨辉三角
- 用队列解决杨辉三角问题
- 用 队列 打印 杨辉三角
- c++ 之 reinterpret_cast <new_type> (expression) 常见用法
- 化学结构式检索obabel
- mysql 优化
- 在Anaconda2中使用arcpy站点包
- SDK Build Tools revision (19.0.0) is too low for project Minimum required is 19.1.0
- 用队列实现杨辉三角
- Android 手机卫士(7)AlertDialog
- 将学生的姓名成绩输入到Map中,并用分数排序前三名
- 获取JDBC中的ResultSet的记录的条数
- 后台管理系统的布局框架
- Redis 通配符批量删除key
- 统计学习方法概论---(1)
- php和js url编码传递转换
- 常见的几种拒绝服务类攻击(DoS)