Train Problem

1412 단어
제목의 뜻은 매우 간단하다. n,str1,str2를 입력한다.
n은 기차의 개수이고,str1은 기차가 역에 들어오는 순서이며,str2는 기차가 역을 나가는 순서이다.
조건이 충족되면 기차가 역에 들어오는 순서를 출력하고, 그렇지 않으면 No를 출력한다.
아이디어:
적나라한 창고의 응용...이전에 창고에 괄호 일치와 표현식 값을 쓴 적이 있기 때문에 생각은 뚜렷하지만 코드를 쓸 수 없습니다...앞으로 많이 써.
코드는 다음과 같습니다.
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<stack>
#include<vector>
#include<algorithm>
using namespace std;

int main()
{
	int num, count;
	string str1, str2;
	stack<int> train;
	vector<string> out;
	while(scanf("%d", &num) != EOF)
	{
		cin>>str1>>str2;
		out.clear(); //   
		while(!train.empty())//   
			train.pop();
		count = 0;//   
		for(int i = 0; i < num; ++i)
		{
			train.push(str1[i]); //            
			out.push_back("in");
			if(train.top() == str2[count]) //     
			{
				count++;
				train.pop();
				out.push_back("out");
				while(!train.empty() && train.top() == str2[count]) //   ,    。。。
				{
					count++;
					train.pop();
					out.push_back("out");
				}
			}
		}
		if(train.empty()) //    
		{
			printf("Yes.
"); for(int i = 0; i <out.size(); ++i) cout<<out[i]<<endl; printf("FINISH
"); } else { printf("No.
"); printf("FINISH
"); } } return 0; }

좋은 웹페이지 즐겨찾기