蓝桥杯ALGO-219 VIP试题 自行车停放(试题解析)

试题 算法训练 自行车停放

提交此题   评测记录  

资源限制

时间限制: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的正整数。

解题思路:向量容器存放 元素,STL函数insert 插入 新元素。

Example:insert(it,1,x)(it为迭代器,x为要存放的元素):在it迭代器位置的前面插入一个元素x;

insert(it+1,1,x)(it为迭代器,x为要存放的元素):在it迭代器位置的后面插入一个元素x;

AC代码如下:
 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int n,x0;
vector<int> L;

int main(int argc, char** argv) {
    cin>>n>>x0;
    
    L.push_back(x0);
    
    vector<int>::iterator it;
    
    for(int i=1;i<n;i++){
        int x,y,z;
        cin>>x>>y>>z;
        
        it=find(L.begin(),L.end(),y);
        if(z==1)
            L.insert(it+1,1,x);
        else if(z==0)
            L.insert(it,1,x);
    }

    for(int i=0;i<L.size();i++)
        cout<<L[i]<<" ";


    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值