3 - 08. 창고 시 뮬 레이 션 대기 열 (25)
시간 제한
400 ms
메모리 제한
65536 kB
코드 길이 제한
8000 B
문제 풀이 절차
Standard
이미 알 고 있 는 두 개의 스 택 S1 과 S2 를 설정 합 니 다. 이 두 개의 스 택 으로 하나의 대기 열 Q 를 모 의 하 십시오.
스 택 으로 대기 열 을 모 의 하 는 것 은 스 택 의 다음 작업 함 수 를 호출 하 는 것 입 니 다.
(1) int IsFull (Stack S): 스 택 S 가 가득 찼 는 지 판단 하고 1 또는 0 으로 돌아 갑 니 다.(2) int IsEmpty (Stack S): 스 택 S 가 비어 있 는 지 판단 하고 1 또는 0 으로 돌아 갑 니 다.(3) void Push (Stack S, Element Type item): 원소 item 을 창고 S 에 눌 러 넣 기;(4) Element Type Pop (Stack S): S 의 스 택 상단 요 소 를 삭제 하고 되 돌려 줍 니 다.
대열 에 들 어 가 는 void AddQ (Element Type item) 와 나 가 는 Element Type DeleteQ () 를 실행 합 니 다.
형식 설명 입력:
입력 은 먼저 두 개의 정수 N1 과 N2 를 주 고 스 택 S1 과 S2 의 최대 용량 을 표시 합 니 다.그 다음 에 일련의 대기 열 동작 을 보 여 줍 니 다. "A item" 은 item 을 정렬 하 는 것 을 표시 합 니 다. (여기 서 item 을 전체 숫자 로 가정 합 니 다)"D" 는 팀 조작 을 나타 낸다.'T' 는 입력 이 끝 났 음 을 나타 낸다.
출력 형식 설명:
입력 한 모든 "D" 동작 에 대해 해당 팀 의 숫자 나 잘못된 정보 인 "ERROR: Empty" 를 출력 합 니 다.입단 작업 이 실행 되 지 않 으 면 'ERROR: Full' 도 출력 해 야 한다.출력 마다 한 줄 을 차지 합 니 다.
샘플 입 출력:
번호
입력
출력
1
2 2
A 1 A 2 D D T
1
2
2
3 2
A 1 A 2 A 3 A 4 A 5 D A 6 D A 7 D A 8 D D D D T
ERROR:Full
1
ERROR:Full
2
3
4
7
8
ERROR:Empty
두 개의 스 택 시 뮬 레이 션 대기 열:
스 택 a 와 b, a 는 입대, b 출 대 에 사용 된다.
(1) 판 대 만: a 가 꽉 차고 b 가 비어 있 지 않 으 면 팀 이 꽉 찬다.
(2) 판 대 공: a 와 b 가 모두 비어 있 으 면 팀 이 비어 있다.
(3) 입단: 먼저 팀 이 꽉 찼 다.
만약 팀 불만: (1) 스 택 a 불만 이 있 으 면 바로 스 택 a
(2) a 가 가득 차 면 a 의 모든 요 소 를 스 택 b 에 팝 업 한 다음 에 요 소 를 스 택 a 에 넣 습 니 다.
(4) 파티: (1) b 가 비어 있 으 면 a 의 모든 요 소 를 스 택 b 에 팝 업 한 다음 스 택 에서 나 옵 니 다.
(2) b 가 비어 있 지 않 으 면 바로 b 에서 원 소 를 꺼 냅 니 다.
/* */
#include
#include
#include
using namespace std;
stacks1;
stacks2;
int main(){
int m,n,i,a;
char c;
cin >> m >> n;
if(m > n){
int tmp;
tmp = m;
m = n;
n = tmp;
}
getchar();
for(i = 0;; i++){
cin >> c;
if(c == 'T')
return 0;/* */
if(c == 'A'){
cin >> a;
if((s1.size() == m)&&(s2.size()!=0)){/* */
cout << "ERROR:Full" << endl;
}
else{
int len1,t;
if(s1.size() == m){
len1 = s1.size();
while(len1--){
t=s1.top();
s1.pop();
s2.push(t);
}
s1.push(a);
}
else if(s1.size() !=m){
s1.push(a);
}
}
}
else if(c == 'D'){
if((s1.size() == 0)&&(s2.size() == 0)){
cout << "ERROR:Empty" << endl;
}
else{
int len2;
if(s2.size() == 0){
len2 = s1.size();
while(len2--){
int t = s1.top();
s1.pop();
s2.push(t);
}
cout << s2.top() << endl;
s2.pop();
}
else if(s2.size() != 0){
cout << s2.top() << endl;
s2.pop();
}
}
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
PAT 1094 구 글 채용메모: 1. subString 왼쪽 닫 고 오른쪽 열 기 2, 0 은 출력 을 보충 해 야 합 니 다. 그렇지 않 으 면 형식 이 잘못 되 었 습 니 다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.