1自动包装机的结构
输出样例MATA
输入格式:
现给定一系列按钮操作,请你依次列出流水线上的物品。
第一次代码:一部分运行超时,13分
#include<bits/stdc++.h>
#define q queue<char>
using namespace std;
int main(){
int n,m,s;
cin>>n>>m>>s;
getchar();
vector<char>res;
vector<q>que;
stack<char>st;
queue<char> a;
a.push("A");
que.emplace_back(a);
for(int i=1;i<=n;i++){
queue<char> que1;
for(int j=0;j<m;j++){
char op;
cin>>op;
que1.push(op);
}
getchar();
que.emplace_back(que1);
}
int x;
cin>>x;
while(x!=-1){
if(x!=0){
if(st.size()<s&&!que[x].empty()){
st.push(que[x].front());
que[x].pop();
}else if(st.size()==s&&!que[x].empty()){
res.emplace_back(st.top());
st.pop();
st.push(que[x].front());
que[x].pop();
}else if(que[x].empty()){
continue;
}
}else{
if(st.empty()){
continue;
}else{
res.emplace_back(st.top());
st.pop();
}
}
cin>>x;
}
for(int i=0;i<res.size();i++){
cout<<res[i];
}
return 0;
}
输出格式:
因为在x!=0时,轨道为空时就不会执行,在x=0时,框里为空的时候也不会执行,所以循环里的两个continue多余,去掉即可。
#include<bits/stdc++.h>
#define q queue<char>
using namespace std;
int main() {
int n, m, s;
cin >> n >> m >> s;
getchar();
vector<char>res;
vector<q>que;//N条轨道
stack<char>st;//筐
//添加数组中编号为0时的内容,因为轨道是从编号为1开始的
queue<char> a;
a.push("A");
que.emplace_back(a);
for (int i = 1; i <= n; i++) {
queue<char> que1;
for (int j = 0; j < m; j++) {
char op;
cin >> op;
que1.push(op);
}
getchar();
que.emplace_back(que1);
}
int x;
cin >> x;
while (x != -1) {
if (x != 0) {
if (st.size() < s && !que[x].empty()) {
st.push(que[x].front());
que[x].pop();
}
else if (st.size() == s && !que[x].empty()) {
res.emplace_back(st.top());
st.pop();
st.push(que[x].front());
que[x].pop();
}
}
else {
if(!st.empty()) {
res.emplace_back(st.top());
st.pop();
}
}
cin >> x;
}
for (int i = 0; i < res.size(); i++) {
cout << res[i];
}
return 0;
}
在一行中顺序输出流水线上的物品,不得有任何空格。
输入第一行给出3个正整数N、M和Smax,分别为轨道的条数、每条轨道初始放置的物品数量、以及筐的最大容量。随后N行,每行给出M个英文大写字母,表示每条轨道的初始物品摆放。
思路:考查队列和栈的运用。因为轨道不止一条,所以队列不止有一个,所以我选择在数组中定义数据类型为队列的数组来封装队列,然后按题目要求一步步实现即可。
2顺序按下按钮0、0后包装机的状态
一种特殊情况是,因为筐的容量是有限的,当筐已经满了,但仍然有某条轨道的按钮被按下时,系统应强制启动0号键,先从筐里抓出一件物品,再将对应轨道的物品推落。此外,如果轨道已经空了,再按对应的按钮不会发生任何事;同样的,如果筐是空的,按0号按钮也不会发生任何事。
最后一行给出一系列数字,顺序对应被按下的按钮编号,直到−1标志输入结束,这个数字不要处理。数字间以空格分隔。题目保证至少会取出一件物品放在流水线上。
文章为作者独立观点,不代表股票交易接口观点