网易有道2017内推编程题 构造队列(模拟)
来源:互联网 发布:金猪网络 编辑:程序博客网 时间:2024/06/05 06:32
小明同学把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。现在小明想让你构造出原始的队列,你能做到吗?
反过来推回去就行了。
#include<cstdio>const int maxn=3e5+5;const int maxm=1e5+5;int que[maxn];int ans[maxm];int main(){ int n,T; scanf("%d",&T); while(T--){ scanf("%d",&n); for(int i=0;i<n;++i){ que[i]=i+1; } int l=0,r=n,fl=1; while(true){ if(r-l==1){ ans[que[l]]=fl++;break; } int nowr=r-(r&1); for(int i=l;i<nowr;++i){ if((i-l)&1){ ans[que[i]]=fl++; }else{ que[r++]=que[i]; } } l=nowr; } for(int i=1;i<=n;++i){ printf("%d%c",ans[i],i==n?'\n':' '); } } return 0;}
1 0
- 网易有道2017内推编程题 构造队列(模拟)
- 网易有道2017内推编程题:构造队列 [python]
- 网易有道2017内推编程题-网易[编程题]构造队列
- 构造队列-网易有道2017年内推编程题
- 网易有道2017内推编程题 队列操作(映射)
- 网易有道2017内推编程题 洗牌(模拟)
- 2017有道内推编程题——构造队列
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 网易有道2017内推编程题
- 2017网易有道编程题:构造队列
- 【真题】网易有道2017内推编程题 模拟洗牌
- 网易有道2017内推编程题第一题
- 洗牌-网易有道2017内推编程题
- 网易有道2017内推编程题-Java实现
- 2017网易有道内推笔试编程题1:洗牌
- 网易有道2017内推编程题2
- [POJ3189][cqbzoj1640]稳定的奶牛分配 解题报告
- HDU 5862 Counting Intersections (扫描线+树状数组)
- leetcode 342. Power of Four
- C/C++之回调函数
- Linux 最有用的命令--man info 帮助命令
- 网易有道2017内推编程题 构造队列(模拟)
- Socket、Tcp、Udp、Http 的认识及区别
- leetcode 198. House Robber
- 对JSON的一点认识和理解以及JQuery处理JSON
- 小论文之旅(1)
- Java面试题整理
- leetcode 101. Symmetric Tree
- leetcode 66. Plus One
- 剑指offer43-计算n个色子掷出各个点数和的概率