C++基础练习题之队列(不是queue,只是一道题,千万别误会)
来源:互联网 发布:引入js 随机数 编辑:程序博客网 时间:2024/05/17 09:11
队列
题目描述
又到午饭时间了。HF 中学的学生们又冲到食堂排队买饭。假设当前只有一个窗口在售
饭。于是饥肠辘辘的学生们排成了长长的一个队列。
突然,一卡通的打卡机坏了。学生们不得不散开队列,或坐或站地到别处休息。队列散
开前,每个学生记住了他前边和后边的学生的编号(编号是一个非负整数,并且各不相同) 。
经过紧急抢修,打卡机恢复正常,学生们排成一列继续买饭。为了公平,需要重新恢复
成队列原来的顺序。
食堂纪律监督员虽然是个学渣,但有幸恰好是你的好朋友。他把这个恢复队列的任务交
给了作为 HF 编程社社长的你。
对于队列第一个学生,它的前边没有人,故用 0 表示。
对于队列最后一个学生,它的后边没有人,故用 0 表示。
输入
第 1 行:1 个整数 N(2<=N<=500),表示队列中有多少个整数
接下来 N 行,每行 2 个整数 Ai,Bi(0<=Ai,Bi<=1000),其中 Ai 是排在这名学生前面学生的编
号,Bi 是排在这名学生后面学生的编号。
输出
第 1 行:输出 N 个整数,分别表示队列初始时从前往后排列的学生的编号。
样例输入
492 310 731 07 141
样例输出
92 7 31 141
提示
下图表示样例的初始队列
运用数学思维计算。
代码如下:
#include<iostream>using namespace std;int n,num[1000];bool check1[2000],check2[2000];struct node{ int last; int next;}stu[1000];int main(){ cin>>n; for(int i=1;i<=n;i++) { cin>>stu[i].last>>stu[i].next; if(stu[i].last==0) num[2]=stu[i].next; if(stu[i].next==0) num[n-1]=stu[i].last; check1[stu[i].last]=1; check2[stu[i].next]=1; } for(int i=1;i<=n;i++) { if(!check1[stu[i].next]&&stu[i].next) num[n]=stu[i].next; if(!check2[stu[i].last]&&stu[i].last) num[1]=stu[i].last; } int x=2,y=n-1; for(int i=0;i<n-2;i++) { if(x>n||y<0) break; for(int j=1;j<=n;j++) { if(x>n||y<0) break; if(stu[j].last==num[x]) num[x+=2]=stu[j].next; if(stu[j].next==num[y]) num[y-=2]=stu[j].last; } } x=1,y=n; for(int i=0;i<n-2;i++) { if(x>n||y<0) break; for(int j=1;j<=n;j++) { if(x>n||y<0) break; if(stu[j].last==num[x]) num[x+=2]=stu[j].next; if(stu[j].next==num[y]) num[y-=2]=stu[j].last; } } for(int i=1;i<n;i++) cout<<num[i]<<" "; cout<<num[n];}
阅读全文
1 1
- C++基础练习题之队列(不是queue,只是一道题,千万别误会)
- 队列(queue)之基础实现
- C++STL之queue队列容器
- Java基础-Queue队列
- 基础queue优先队列
- c++ 队列Queue的实现 - 练习题
- 不是程序员可千万别上这样的酒席
- 不是程序员可千万别上这样的酒席
- 不是程序员可千万别上这样的酒席zt
- 【妈妈付出不是应该的,千万别宠坏…
- queue-c链式队列
- C++_队列(Queue)
- [c]队列queue
- C#queue队列总结
- c++面试题之千万别闲着
- 队列简要实现,是queue,不是dequeue
- Java之--Queue队列
- 数据结构之队列queue
- 淘淘商城系列——单点登录之安全退出
- dir对文件排序后写入到记录文件,文件名称混乱问题
- 兄弟郊游问题
- 解释loadrunner的90%的平均响应时间的由来。分位值
- 简单认识tcp/ip通信协议
- C++基础练习题之队列(不是queue,只是一道题,千万别误会)
- nypoj-兄弟郊游问题
- POJ 3299
- Android程序OOM问题分析及解决
- MFC窗口和控件大小等比例缩放
- 记大学北京之行
- 快速上手 Kotlin 的 11 招
- Cstring to string
- Andriod开发——Activity数据传递的学习