众筹网站怎么做推广方案,怎么做电影网站app,做购物网站怎么写开题报告,视频网站怎么建设R7-5 列车厢调度
分数 25 全屏浏览题目 切换布局
作者 周强
单位 青岛大学 1 --移动方向/3 \2 --移动方向 大家或许在某些数据结构教材上见到过“列车厢调度问题”#xff08;当然没见过也不要紧#xff09;。今天#xff0c;我们就来实际操作一下列车…R7-5 列车厢调度
分数 25 全屏浏览题目 切换布局
作者 周强
单位 青岛大学 1 --移动方向/3 \2 --移动方向 大家或许在某些数据结构教材上见到过“列车厢调度问题”当然没见过也不要紧。今天我们就来实际操作一下列车厢的调度。对照上方的ASCII字符图问题描述如下
有三条平行的列车轨道1、2、3以及1-3和2-3两段连接轨道。现有一列车厢停在1号轨道上请利用两条连接轨道以及3号轨道将车厢按照要求的顺序转移到2号轨道。规则是
每次转移1节车厢处在1号轨道的车厢要么经过1-3连接道进入3号轨道该操作记为1-3要么经过两条连接轨道直接进入2号轨道该操作记为1-2一旦车厢进入2号轨道就不可以再移出该轨道处在3号轨道的车厢只能经过2-3连接道进入2号轨道该操作记为3-2显然任何车厢不能穿过、跨越或绕过其它车厢进行移动。
对于给定的1号停车顺序如果经过调度能够实现2号轨道要求的顺序则给出操作序列如果不能就反问用户 Are(你) you(是) kidding(凯丁) me(么)?
输入格式:
两行由大写字母组成的非空字符串第一行表示停在1号轨道上的车厢从左到右的顺序第二行表示要求车厢停到2号轨道的进道顺序输入样例1中第二行CBA表示车厢在2号轨道的停放从左到右是ABC因为C最先进入所以在最右边。两行字符串长度相同且不超过26因为只有26个大写字母每个字母表示一节车厢。题目保证同一行内的字母不重复且两行的字母集相同。
输出格式:
如果能够成功调度给出最短的操作序列每个操作占一行。所谓“最短”即如果1-2可以完成的调度就不要通过1-3和3-2来实现。如果不能调度输出 Are you kidding me?
输入样例1:
ABC
CBA输出样例1:
1-3
1-3
1-2
3-2
3-2输入样例2:
ABC
CAB输出样例2:
Are you kidding me?#includebits/stdc.h
using namespace std;
string s1, s2;
queuecharQ;//出队 1-2
stackcharS;//入栈 1-3 出栈 3 - 2
vectorstringans;
void Q_out()
{while (!S.empty() !Q.empty() S.top() Q.front()){ans.emplace_back(3-2);S.pop();Q.pop();}
}
int main()
{cin s1 s2;for (auto i : s2)Q.emplace(i);for (auto i : s1){if (i Q.front()){ans.emplace_back(1-2);Q.pop();}else{Q_out();if (i Q.front()){ans.emplace_back(1-2);Q.pop();}else {S.push(i);ans.emplace_back(1-3);}}}Q_out();if (Q.empty() S.empty())for (auto i : ans)cout i endl;elsecout Are you kidding me? endl;return 0;
}