您的位置:首页 > 其它

hdu 1022 栈

2013-07-16 16:36 274 查看
/*

题目大概意思:有N辆火车,以序列1方式进站,判断是否能以序列2方式出栈。进站不一定是一次性进入,也就是说中途可以出站。
举出一列数据 7 1234567 4321576
上面数据应该是 in in in in out out out out in out in in out out;

*/

#include <iostream>
#include <cstdio>
#include <stack>
using namespace std;

int main(){
char str1[100], str2[100];
int n, result[200];

while( scanf( "%d%s%s", &n, str1, str2 ) != EOF ){
stack<char> s;
int i, j, k;
i = j = k = 0;
s.push( str1[i++] );
result[k++] = 1;
while( i <= n && j < n ){
if( s.size() && s.top() == str2[j] ){
result[k++] = 0;
j++;
s.pop();
}else{
if( i == n ){
break;
}
s.push( str1[i++] );
result[k++] = 1;
}
}
if( s.size() ){
cout << "No." << endl;
}else{
cout << "Yes." << endl;
for( i = 0; i < k; i++ ){
if( result[i] ){
cout << "in" << endl;
}else{
cout << "out" << endl;
}
}
}
cout << "FINISH" << endl;
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: