L2-1 包装机 (25 分)(STL43行代码)
L2-1 包裝機(jī) (25 分)
一種自動(dòng)包裝機(jī)的結(jié)構(gòu)如圖 1 所示。首先機(jī)器中有 N
條軌道,放置了一些物品。軌道下面有一個(gè)筐。當(dāng)某條軌道的按鈕被按下時(shí),活塞向左推動(dòng),將軌道盡頭的一件物品推落筐中。當(dāng) 0號(hào)按鈕被按下時(shí),機(jī)械手將抓取筐頂部的一件物品,放到流水線上。
一種特殊情況是,因?yàn)榭鸬娜萘渴怯邢薜?#xff0c;當(dāng)筐已經(jīng)滿了,但仍然有某條軌道的按鈕被按下時(shí),系統(tǒng)應(yīng)強(qiáng)制啟動(dòng) 0號(hào)鍵,先從筐里抓出一件物品,再將對(duì)應(yīng)軌道的物品推落。此外,如果軌道已經(jīng)空了,再按對(duì)應(yīng)的按鈕不會(huì)發(fā)生任何事;同樣的,如果筐是空的,按 0號(hào)按鈕也不會(huì)發(fā)生任何事。
現(xiàn)給定一系列按鈕操作,請(qǐng)你依次列出流水線上的物品。
輸入格式:
輸入第一行給出 3 個(gè)正整數(shù) N(≤100)、M(≤1000)和 S?max ?? (≤100),分別為軌道的條數(shù)(于是軌道從 1 到 N
編號(hào))、每條軌道初始放置的物品數(shù)量、以及筐的最大容量。隨后 N 行,每行給出 M 個(gè)英文大寫字母,表示每條軌道的初始物品擺放。
最后一行給出一系列數(shù)字,順序?qū)?yīng)被按下的按鈕編號(hào),直到 ?1
標(biāo)志輸入結(jié)束,這個(gè)數(shù)字不要處理。數(shù)字間以空格分隔。題目保證至少會(huì)取出一件物品放在流水線上。
輸出格式:
在一行中順序輸出流水線上的物品,不得有任何空格。
輸入樣例:
3 4 4
GPLT
PATA
OMSA
3 2 3 0 1 2 0 2 2 0 -1
輸出樣例:
MATA
#include<bits/stdc++.h> using namespace std; int main() {int n,m,smax;cin>>n>>m>>smax;queue<char>a[n+1];//模擬隊(duì)列,n+1是因?yàn)楹竺娓臃奖?/span>stack<char>b;//用棧模擬筐子for(int i=1;i<=n;i++){for(int j=0;j<m;j++)//讀取n條軌道的m個(gè)元素{char tem;cin>>tem;a[i].push(tem);}}while(1){int x;cin>>x;if(x==-1)//如果輸入-1正常退出break;if(x==0&&!b.empty())//為零且存在元素就出棧,如果沒有判空會(huì)出現(xiàn)段錯(cuò)誤!!{cout<<b.top();b.pop();}if(x>0&&b.size()<smax&&a[x].size())//入棧{b.push(a[x].front());a[x].pop();}else if(x>0&&b.size()>=smax&&a[x].size())//如果棧滿還繼續(xù)加入元素,就先拿出一個(gè),再加入元素//這里的是else if語句,不然會(huì)和上一條重復(fù)操作。 {cout<<b.top();b.pop();b.push(a[x].front());a[x].pop();}} }總結(jié)
以上是生活随笔為你收集整理的L2-1 包装机 (25 分)(STL43行代码)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 银行业务队列简单模拟 (25 分)c语言
- 下一篇: Magical Sticks 棍子拼接