当前位置:   article > 正文

蓝桥杯练习系统(算法训练)ALGO-966 自行车停放

蓝桥杯练习系统(算法训练)ALGO-966 自行车停放

资源限制

内存限制:256.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  有n辆自行车依次来到停车棚,除了第一辆自行车外,每辆自行车都会恰好停放在已经在停车棚里的某辆自行车的左边或右边。(e.g.停车棚里已经有3辆自行车,从左到右编号为:3,5,1。现在编号为2的第4辆自行车要停在5号自行车的左边,所以现在停车棚里的自行车编号是:3,2,5,1)。给定n辆自行车的停放情况,按顺序输出最后停车棚里的自行车编号。

输入格式

  第一行一个整数n。
  第二行一个整数x。表示第一辆自行车的编号。
  以下n-1行,每行3个整数x,y,z。
  z=0时,表示编号为x的自行车恰停放在编号为y的自行车的左边
  z=1时,表示编号为x的自行车恰停放在编号为y的自行车的右边

输出格式

  从左到右输出停车棚里的自行车编号

样例输入

4
3
1 3 1
2 1 0
5 2 1

样例输出

3 2 5 1

数据规模和约定

  n<=100000
  自行车编号为不超过100000的正整数。

vector数组实现

  1. #include<iostream>
  2. #include<algorithm>
  3. #include<vector>
  4. using namespace std;
  5. int n,x;
  6. vector<int> L;
  7. int main(){
  8. cin>>n>>x;
  9. L.push_back(x);
  10. vector<int>::iterator it;
  11. for(int i=1;i<n;i++){
  12. int x,y,z;
  13. cin>>x>>y>>z;
  14. it=find(L.begin(),L.end(),y);
  15. if(z==0){
  16. L.insert(it,1,x);
  17. }else if(z==1){
  18. L.insert(it+1,1,x);
  19. }
  20. }
  21. for(int i=0;i<L.size();i++){
  22. cout<<L[i]<<" ";
  23. }
  24. return 0;
  25. }

 链表实现(但是运行超时)

  1. #include<iostream>
  2. using namespace std;
  3. typedef struct node{
  4. int data;
  5. struct node *next;
  6. }node,*linklist;
  7. //找到 y结点
  8. node *find(linklist L,int y){
  9. node *p=L->next;
  10. while(p->data!=y&&p){
  11. p=p->next;
  12. }
  13. return p;
  14. }
  15. int main(){
  16. linklist L=new node;
  17. L->next=NULL;
  18. int n;
  19. cin>>n;
  20. int x;
  21. cin>>x;
  22. node *s=new node;
  23. s->data=x;
  24. s->next=NULL;
  25. L->next=s;
  26. int cnt=n-1;
  27. while(cnt--){
  28. int x,y,z;
  29. cin>>x>>y>>z;
  30. if(z==0){//在左边
  31. node *p=find(L,y);
  32. //先后插,再交换数据域
  33. node *s=new node;
  34. s->data=x;
  35. s->next=p->next;
  36. p->next=s;
  37. int t;
  38. t=s->data;
  39. s->data=p->data;
  40. p->data=t;
  41. }else if(z==1){//x在y的右边
  42. node *p=find(L,y);
  43. //后插
  44. node *s=new node;
  45. s->data=x;
  46. s->next=p->next;
  47. p->next=s;
  48. }
  49. }
  50. node *p=L->next;
  51. while(p){
  52. cout<<p->data<<" ";
  53. p=p->next;
  54. }
  55. cout<<endl;
  56. return 0;
  57. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/345746
推荐阅读
相关标签
  

闽ICP备14008679号