构造队列
来源:互联网 发布:淘宝怎么投诉药店 编辑:程序博客网 时间:2024/05/24 05:04
Question
小明同学把1到n这n个数字按照一定的顺序放入了一个队列Q中。现在他对队列Q执行了如下程序:
while(!Q.empty()) //队列不空,执行循环{ int x=Q.front(); //取出当前队头的值x Q.pop(); //弹出当前队头 Q.push(x); //把x放入队尾 x = Q.front(); //取出这时候队头的值 printf("%d\n",x); //输出x Q.pop(); //弹出这时候的队头}
做取出队头的值操作的时候,并不弹出当前队头。
小明同学发现,这段程序恰好按顺序输出了1,2,3,…,n。现在小明想让你构造出原始的队列,你能做到吗?
Algorithm
可以逆向考虑,举个例子n=3时
2,1,3
根据上面的步骤:
1、把队头2取出,并弹出队头 1,3
2、把2放入队尾 1,3,2
3、取出当前队头1,并弹出队头 3,2 输出1
剩下队列为3,2
重复上面的步骤 输出2
重复上面的步骤 输出3
逆过程应该是
把队尾元素取出,并弹出,放入队头,插入元素
Code
#include<iostream>#include<vector>#include<deque>using namespace std;int main(){ int T; while(cin>>T){ for(int t=0;t<T;t++){ int n; cin>>n; deque<int> d; for(int i=n;i>=1;i--){ d.push_front(i); int tmp = d.back(); d.pop_back(); d.push_front(tmp); } for(int i=0;i<n;i++){ if(i==n-1) cout<<d[i]<<endl; else cout<<d[i]<<' '; } } } return 0;}
阅读全文
0 0
- 构造队列
- 构造队列
- 循环队列基本构造
- 堆构造优先级队列
- 优先队列的构造
- 两个栈构造队列
- 网易构造队列
- 网易笔试:构造队列
- [编程题] 构造队列
- [编程题] 构造队列
- 面试题-构造队列
- 构造队列问题(循环队列变形java)
- 两个栈构造一个队列 || 两个队列构造一个栈
- 04 两个栈构造队列 & 两个队列构造栈
- Java.util.Queue构造队列
- 牛客网答题笔记--构造队列
- 构造队列的算法问题
- codeforces884D(大概是构造,优先队列)
- QML中TextEdit中添加图片
- 377. Combination Sum IV
- PHP如何防止跨域调用接口
- 编程感受
- git push错误:RPC failed; HTTP 401 curl 22 The requested URL returned error: 401 The remote end hung up
- 构造队列
- c++中的隐藏、重载、覆盖(重写)
- CF 149D 区间dp
- 多module环境下打包出现boot-inf的解决方案
- nyoj 202红黑数
- inline-block元素与父div底边之间的间距问题(inline-block与vertical-align:baseline)
- 玩转logback
- webservice
- tomcat plugin的下载地址