网易有道编程题:恢复队列(C++)
来源:互联网 发布:天湖ipv6网络电视 编辑:程序博客网 时间:2024/06/17 21:50
题目:
小明同学把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。现在小明想让你构造出原始的队列,你能做到吗?
输入描述:
第一行一个整数T(T ≤ 100)表示数据组数,每组数据输入一个数n(1 ≤ n ≤ 100000),输入的所有n之和不超过200000。
输出描述:
对于每组数据,输出一行,表示原始的队列。数字之间用一个空格隔开,不要在行末输出多余的空格.
输入例子:
4
1
2
3
10
输出例子:
1
2 1
2 1 3
8 1 6 2 10 3 7 4 9 5
答案:
#include<iostream>using namespace std;int main() { //输入T int T=0; cin>>T; while (T--) { int n; cin>>n;//输入n int *a = new int[n+1]; a[0]=0; //原始输出队列:1,2,...,n for (int i=1; i<=n; i++) { a[i]=i; } //还原队列(原理类似插入排序) for (int i=0; i<n-1; i++) { a[0]=a[n]; int k = n; for (int j=0; j<=i; j++) { a[k]=a[k-1]; k--; } a[k]=a[0]; } //输出还原的队列 int i; for (i=1; i<n; i++) { cout<<a[i]<<" "; } cout<<a[i]<<endl; }}
结果:
2 0
- 网易有道编程题:恢复队列(C++)
- 网易有道编程题:恢复队列
- 2017网易有道编程题:构造队列
- 网易有道编程题:洗牌算法(C++)
- 构造队列-网易有道2017年内推编程题
- 网易有道2017内推编程题 构造队列(模拟)
- 网易有道2017内推编程题 队列操作(映射)
- 网易有道2017内推编程题:构造队列 [python]
- 网易有道笔试编程之队列构造
- 网易有道2017内推编程题-网易[编程题]构造队列
- 牛客网解题-在线编程-2017网易有道_构造队列
- 网易有道第一道编程题
- 2017网易有道校招三道编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道编程
- python读写oracle的clob字段
- 自定义View系列(1)--仿支付宝中物流状态效果
- 0-6 Linux命令详解
- 数组排序sort()
- CSRF verification failed. Request aborted.
- 网易有道编程题:恢复队列(C++)
- 剑指Offer_30_连续子数组的最大和
- $(function(){})
- 抽象类和接口的区别
- iOS本地推送和远程推送详解
- PCM
- mysql(三)表的操作
- Stanford机器学习---第五讲. 神经网络的学习 Neural Networks learning
- mcp2515 芯片驱动总线错误BUG的解决方法(主要无法进入中断bug)