1.题目:

Problem Description

一列货运列车共有n节车厢,每节车厢将停放在不同的车站。假定n个车站的编号分别为1~n,即货运列车按照第n站至第1站的次序经过这些车站。为了便于从列车上卸掉相应的车厢,车厢的编号应与车站的编号相同。这样,在每个车站只需卸掉最后一节车厢。因此,对于给定的任意次序车厢,必须进行重新排列,使其符合要求。车厢重排工作可通过转轨站完成,在转轨站中有一个入轨、一个出轨和k个缓冲轨,缓冲轨位于入轨和出轨之间。假定缓冲轨按先进先出的方式工作,现要求设计算法解决火车车厢重排问题。

Input

有多组数据,每组第一行为车厢节数n和缓冲轨数目k(2<=k<=5,k<=n<=10),第二行为初始给定的车厢编号次序序列。

Output

若给定的车厢编号次序序列可重排,则输出1;否则输出0。

Sample Input

9 3

3 6 9 2 4 7 1 8 5

9 3

3 6 9 2 4 7 5 8 1

Sample Output

1

0

2.参考代码:

#include

using namespace std;

struct Node{

int data;

Node* next;

};

class LinkQueue{

private:

Node* front,* rear;

public:

LinkQueue(); ///构造函数

~LinkQueue(); ///析构函数

void EnQueue(int x); ///入队列

int DeQueue(); ///出队列

int GetFront(){ ///获得队头元素

if(!empty())

return front->next->data;

}

int GetRear(){ ///获得队尾元素

if(front!=rear)

return rear->data;

}

bool empty(){ ///判断队列是否为空

if(front==0)

return true;

else

return false;

}

void Trans(); ///遍历火车车厢序列

friend void PermuteTrans(int* arr,LinkQueue* a,int n,int k); ///重排火车车厢序列

};

LinkQueue::LinkQueue(){

Node* s=new Node;

s->next=NULL;

front=rear=s;

}

LinkQueue::~LinkQueue(){

Node* p=new Node;

p->next=NULL;

front=rear=p;

}

void LinkQueue::EnQueue(int x){

Node* s=new Node;

s->data=x;

s->next=NULL;

rear->next=s;

rear=s;

}

int LinkQueue::DeQueue(){

if(!empty()){ ///队列不空才能出队

Node* p=new Node;

p=front->next;

int x=p->data;

if(p->next==NULL)

rear=front;

delete p;

return x;

}

}

void LinkQueue::Trans(){

Node* p=front->next;

while(p){

cout<data<

p=p->next;

}

}

void PermuteTrans(int* arr,LinkQueue* a,int n,int k){

int i=0;

bool flag=true; ///设置标志,初始为真

while(i

flag=false; ///改变标志

for(int j=0;j

{

if(a[j].GetRear()next==NULL)

///如果某条缓冲轨道的第一个车厢的编号小于即将进来的车厢编号,那么他就可以进入轨道

///或者某条缓冲轨道空置的时候也可以进入轨道

{

a[j].EnQueue(arr[i]); ///入队列

flag=true; ///改变标志

i++; ///下标加一

break;

}

}

}

if(flag) ///如果全部进入轨道,说明可以排

cout<<1<

else ///否则排不了

cout<<0<

}

int main()

{

int i,n,k,a[1111];

while(cin>>n>>k)

{

for(i=0;i

cin>>a[i];

LinkQueue lq;

for(i=0;i

lq.EnQueue(a[i]);

LinkQueue* H=new LinkQueue[k];

PermuteTrans(a,H,n,k);

}

return 0;

}

java队列火车厢重排_火车车厢重排(链队列)相关推荐

  1. java队列火车厢重排_火车车厢重排问题--队列模拟

    ①问题描述 一列货运列车共有n节车厢,每节车厢将停放在不同的车站.假定n个车站的编号分别为1-n,即货运列车按照第n站至第1站的次序经过这些车站.为了便于从列车上卸掉相应的车厢,车厢的编号应与车站的编 ...

  2. java队列火车厢重排_火车车厢重排问题

    1 #include 2 #include 3 usingstd::stack;4 usingstd::cin;5 usingstd::cout;6 7 const int MAX = 100; // ...

  3. java队列火车厢重排_火车车厢重排——队列实现

    其实队列和栈挺像的,所以也就没有单独写一个实现队列的笔记,可以参考一下栈的实现:https://www.cnblogs.com/2015-16/p/12957964.html    (同时这一篇也包含 ...

  4. java都界面相对布局_浏览器的重排和重绘

    浏览器的高层结构 1.用户界面 - 包括地址栏.前进/后退按钮.书签菜单等. 2.浏览器引擎 - 在用户界面和呈现引擎之间传送指令. 3.渲染引擎 - 负责显示请求的内容. 4.网络 - 用于网络调用 ...

  5. Java老鼠走迷宫流程图_老鼠走迷宫(队列实现)

    1.[文件] Game.cpp ~ 2KB 下载(134) // Game.cpp: implementation of the Game class. // // #include "Ga ...

  6. 队列处理高并发_高并发架构消息队列面试题解析

    面试题 为什么使用消息队列? 消息队列有什么优点和缺点? Kafka.ActiveMQ.RabbitMQ.RocketMQ 都有什么区别,以及适合哪些场景? 面试官心理分析 其实面试官主要是想看看: ...

  7. java语言描述一个行为_设计模式之责任链模式——Java语言描述

    责任链模式为请求创建了一个接受者对象的链.这种模式给予请求的类型,对请求的发送者和接受者进行解耦.这种类型的设计模式属于行为模式.在这种模式下,通常每个接收者都包含对另一个接收者的引用.如果一个对象不 ...

  8. 消息队列控制灯代码_代码实现RabbitMQ死信队列的创建

    ‍ ‍前言:‍ ‍ 之前有写过死信队列的使用场景以及通过管控台创建死信.这次就通过代码实现死信队列的创建,同时也分享一下RabbitMQ封装的类. 准备: 1. 先准备一个死信队列(最后用来消费)的参 ...

  9. 数据结构-火车车厢重排问题(队列实现)

    问题描述 转轨站示意图如下: 重排过程如下: 伪代码 1. 分别对k个队列初始化: 2. 初始化下一个要输出的车厢编号nowOut = 1; 3. 依次取入轨中的每一个车厢的编号: 3.1 如果入轨中 ...

最新文章

  1. sklearn:sklearn.GridSearchCV函数的简介、使用方法之详细攻略
  2. 【学习·求职必备】入行深度学习之前,应该做好哪些准备
  3. 归并排序——算法系列
  4. 施耐德EVlink 电动车充电站有新漏洞,可导致电动车遭劫持
  5. 组织化视角的智慧城市
  6. ITIL 4 讲解:事件管理 (Incident Management)
  7. kubernetes核心组件的运行机制
  8. 教你如何使用数字组件,制作有灵魂的数据可视化大屏
  9. DH算法 | Diffie-Hellman 密钥交换
  10. 农历和阳历的之间的转换
  11. c语言 交通处罚单管理程序 typedef struct,交通罚单.doc
  12. 软考证书可积分落户、评职称、抵扣个税等,快来考一个吧!
  13. “云”上就诊,泽塔云超融合助力医院数字化转型
  14. 从“化学家”到开发者,从甲骨文到TDengine,我人生的两次重要抉择
  15. 给定字符串A和B,输出A和B中的最大公共子串。
  16. O2OA开发相关教程天梯(更新日期:2019-02-28)
  17. 程序员要想突破圈层,请尽快放弃技术优势!
  18. 蓝桥杯单片机组——程序框架及客观题
  19. 阿里云开发月老盲盒纸条交友小程序源码及配置教程
  20. Cheat Engine 基本用法

热门文章

  1. 基于改进CRNN算法的专利附图标记识别
  2. 小P寻宝记——粗心的基友
  3. 谷歌开发流体标注,标注图像数据集速度提高3倍
  4. 笔记--Python拼接图片(M * N)
  5. 嵌入式Linux驱动开发【学习小结】
  6. 我的linux命令手册
  7. 最可贵的努力,是保持正确的姿势
  8. DevOps免费学,还有证书
  9. 祁文之恋——离开你的第五天
  10. 共享未授予用户计算机登录,解决Win10 1909访问共享文件提示“未授予用户在此计算机上的请求登录类型”解决方法...