HDU1022 Train Problem I
창고 3 개 를 열 었 습 니 다.
oo2 기차 가 떠 나 도록 요구 하 는 순 서 를 저장 합 니 다.
oo3 기차 가 역 에 들 어 오 는 순 서 를 모 의 한다.
oo1 은 보조 창고 로 역 에 들 어 오 는 첫 열 차 를 편리 하 게 추출 하기 위해 서 입 니 다.
데이터 구 조 를 배 울 때 위조 코드 를 잘 쓰 지 못 해서 모 의 사고 가 처음에는 엉망 이 되 었 다. 나중에 진실 을 확인 하고 위조 코드 를 한 번 쓰 면 생각 이 훨씬 뚜렷 해 졌 다.
(1) 만약 에 oo3 창고 가 비어 있 지 않 고 창고 꼭대기 원소 와 oo2 창고 꼭대기 원소 가 같다 면 두 창고 모두 창고 가 같 지 않 을 때 까지 튕 기기 시작한다.
(2) 만약 에 oo3 스 택 이 비어 있 지 않 고 oo3 스 택 의 정상 요소 와 oo2 스 택 의 정상 요소 가 같 지 않 으 면 보조 스 택 oo1 이 비어 있 습 니 다 (기차 가 모두 역 에 들 어 왔 음 을 의미 합 니 다)
그러면 제 공 된 입장 순서 가 합 리 적 이지 않 고 직접 표지 가 실 패 했 습 니 다.
(3) 세 개의 창고 가 모두 비어 있 으 면 표지 가 성공 적 으로 튀 어 나 옵 니 다.
(4) 남 은 것 은 oo3 스 택 의 꼭대기 요소 와 oo2 스 택 의 꼭대기 요소 가 같 지 않 고 보조 스 택 이 아직 비어 있 지 않다 는 것 은 기차 가 역 에 들 어 갈 수 있다 는 것 을 의미한다. 그래서 oo1 은 탄 스 택, oo3 스 택 에 들 어 갈 수 있다.
oo3 스 택 에서 스 택 에 들 어 갈 때 활동 상황 을 기록 하고 마지막 으로 스 택 에 들 어 가 는 순 서 를 출력 하면 됩 니 다.
AC program:
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
int n;
char o1[11],o2[11];
int main()
{
while(~scanf("%d%s%s",&n,o1,o2))
{
int s[20],k=0;
stack<int>oo1,oo2,oo3;
int len1=strlen(o1);
int len2=strlen(o2);
for(int i=len1-1;i>=0;i--)
{
oo1.push(o1[i]-'0');
}
for(int i=len2-1;i>=0;i--)
{
oo2.push(o2[i]-'0');
}
int tmp=oo1.top();
oo1.pop();
oo3.push(tmp);
s[k++]=1;
bool flag;
while(1)//oo1 ,oo3 oo2
{
while(!oo3.empty()&&oo3.top()==oo2.top())
{
oo3.pop();
s[k++]=2;
oo2.pop();
}
if(!oo3.empty()&&oo3.top()!=oo2.top()&&oo1.empty())
{
flag=false;
break;
}
else if(oo1.empty()&&oo2.empty()&&oo3.empty())
{
flag=true;
break;
}
else
{
tmp=oo1.top();
oo1.pop();
oo3.push(tmp);
s[k++]=1;
}
}
if(flag)
{
printf("Yes.
");
for(int i=0;i<k;i++)
{
if(s[i]==1)
printf("in
");
else
printf("out
");
}
printf("FINISH
");
}
else
{
printf("No.
");
printf("FINISH
");
}
}
//system("pause");
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.