7-9 包装机 (25 分)

简介: 7-9 包装机 (25 分)

7-9 包装机 (25 分)


一种自动包装机的结构如图 1 所示。首先机器中有 N 条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当 0 号按钮被按下时,机械手将抓取筐顶部的一件物品,放到流水线上。图 2 显示了顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态。


9639756d4ef3846ed766240a8d9644d2.jpg


图1 自动包装机的结构


baccf206dc838262afb1b1c2470f385e.jpg


图 2 顺序按下按钮 3、2、3、0、1、2、0 后包装机的状态


一种特殊情况是,因为筐的容量是有限的,当筐已经满了,但仍然有某条轨道的按钮被按下时,系统应强制启动 0 号键,先从筐里抓出一件物品,再将对应轨道的物品推落。此外,如果轨道已经空了,再按对应的按钮不会发生任何事;同样的,如果筐是空的,按 0 号按钮也不会发生任何事。


现给定一系列按钮操作,请你依次列出流水线上的物品。


输入格式:


输入第一行给出 3 个正整数 N(≤100)、M(≤1000)和 Smax(≤100),分别为轨道的条数(于是轨道从 1 到 N 编号)、每条轨道初始放置的物品数量、以及筐的最大容量。随后 N 行,每行给出 M 个英文大写字母,表示每条轨道的初始物品摆放。


最后一行给出一系列数字,顺序对应被按下的按钮编号,直到 −1 标志输入结束,这个数字不要处理。数字间以空格分隔。题目保证至少会取出一件物品放在流水线上。


输出格式:


在一行中顺序输出流水线上的物品,不得有任何空格。


输入样例:


1. 3 4 4
2. GPLT
3. PATA
4. OMSA
5. 3 2 3 0 1 2 0 2 2 0 -1


输出样例:


MATA

 

这题没啥好说的直接淦!!!!


#include<iostream>
#include<queue>
#include<stack>
using namespace std;
const int N=1010,M=1010;
int n,m,s,x;
string str;
queue<char>q[N];
stack<char>stk;
int main(){
    cin>>n>>m>>s;
    for(int i=1;i<=n;i++)
    {
        cin>>str;
        for(int j=0;j<m;j++)
        {
            q[i].push(str[j]);
        }
    }
    while(scanf("%d",&x),x!=-1)
    {
        if(!x)
        {
            if(stk.size())
            {
                printf("%c",stk.top());
                stk.pop();
            }
        }
        else
        {
            if(q[x].size())//轨道不空是框运行的条件
            {
                if(stk.size()==s)
                {
                    printf("%c",stk.top());
                    stk.pop();
                }
                stk.push(q[x].front());
                q[x].pop();
            }
        }
    }
    return 0;
}
目录
相关文章
|
17天前
|
存储 编解码
1068 万绿丛中一点红 (20 分)
1068 万绿丛中一点红 (20 分)
|
17天前
|
数据安全/隐私保护
1048 数字加密 (20 分)
1048 数字加密 (20 分)
L1-041 寻找250 (10 分)
L1-041 寻找250 (10 分)
201 0
L1-041 寻找250 (10 分)
L1-044 稳赢 (15 分)
L1-044 稳赢 (15 分)
121 0
L1-044 稳赢 (15 分)
h0148. 66 (30 分)
h0148. 66 (30 分)
78 0
L1-059 敲笨钟 (20 分)
L1-059 敲笨钟 (20 分)
109 0
L1-030 一帮一 (15 分)
L1-030 一帮一 (15 分)
110 0
|
C语言 C++
1086 就不告诉你 (15 分)
做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三。”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积。
326 0
1086 就不告诉你 (15 分)
|
C语言 C++
L1-4 寻找250 (10 分)
对方不想和你说话,并向你扔了一串数…… 而你必须从这一串数字中找到“250”这个高大上的感人数字。
713 0
L1-4 寻找250 (10 分)
7-103 牛几 (10 分)
7-103 牛几 (10 分)
53 0