算法训练 自行车停放(C++)

阅读: 评论:0

算法训练 自行车停放(C++)

算法训练 自行车停放(C++)

#算法训练 自行车停放
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  有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的正整数。

代码超时 80
####原因主要是在n非常大的情况下,在遍历整个可变长数组的过程####中很费时
复制代码

 1 #include<iostream>2 #include<vector>3 //anthor:ZQ4 using namespace std;5 int main(){6     vector<int>obj;7     vector<int>::iterator it;8     int n,ns,nq,flag,n1;9     cin>>n;
10     cin>>n1;
11     obj.push_back(n1);
12     for(int i=1;i<n;i++){
13         cin>>ns>>nq>>flag;
14         for(it=obj.begin();it!&#d();it++){
15             if(*it==nq){
16                 if(flag==0){
17                     obj.insert(it,ns);
18                 }else{
19                     obj.insert(it+1,ns);
20                 }
21                 break; 
22             }
23         }
24     }
25     for(it=obj.begin();it!&#d();it++){
26         cout<<*it<<" ";
27     }
28     return 0;
29 } 

复制代码
改进代码

###不用去一个一个去寻找自行车位置,调用库中的函数###find()直接锁定位置

代码:

复制代码1 #include<iostream>2 #include<vector>3 #include<algorithm>4 //anthor:ZQ5 using namespace std;6 int main(){7     vector<int>obj;8     vector<int>::iterator it;9     vector<int>::iterator position;
10     int n,ns,nq,flag,n1;
11     cin>>n;
12     cin>>n1;
13     obj.push_back(n1);
14     for(int i=1;i<n;i++){
15         cin>>ns>>nq>>flag;
16         position=find(obj.begin(),d(),nq);
17         if(flag==0){
18             obj.insert(position,ns);
19         }else{
20             obj.insert(position+1,ns);
21         }
22     }
23 //        for(it=obj.begin();it!&#d();it++){
24 //            if(*it==nq){
25 //                if(flag==0){
26 //                    obj.insert(it,ns);
27 //                }else{
28 //                    obj.insert(it+1,ns);
29 //                }
30 //                break; 
31 //            }
32 //        }
33     for(it=obj.begin();it!&#d();it++){
34         cout<<*it<<" ";
35     }
36     return 0;
37 } 
复制代码

转载请标明出处
标签: BlueBridgeOJ

本文发布于:2024-01-31 17:46:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170669440330271.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:算法   自行车
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23