标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 26603 Accepted Submission(s):
10061
1 #include <iostream> 2 #include <cstdio> 3 #include <stack> 4 using namespace std; 5 int main() 6 { 7 int n,i,j,m,num; 8 char str1[105],str2[105]; 9 int flag[105]; 10 while(~scanf("%d %s %s",&n,str1,str2)) 11 { 12 stack <char> s; //定义一个栈 13 while(!s.empty()) //如果栈不为空,则必须将栈清空 14 s.pop(); 15 i=j=num=0; 16 while(j<n) 17 { 18 if(s.empty()||s.top()!=str2[j]&&i<n) //如果栈是空的,或者当前要出来的车不是栈中的第一辆可出来的车,则存入当前这辆车 19 { 20 s.push(str1[i]); 21 flag[num++]=1; //并标记为1,表示进站 22 i++; 23 } 24 else 25 { 26 if(s.top()==str2[j]) //如果此时栈中可以出站的车正好是要求出站的车,则马上从栈中出来 27 { 28 s.pop(); 29 flag[num++]=0; //出站车,标记为0 30 j++; 31 } 32 33 else //如果i>n,则跳出循环 34 break; 35 } 36 } 37 if(s.empty()) //如果此时栈是空的,则表示序列1的列车以序列2的顺序全部出去,因次输出Yes.,否则输出No. 38 { 39 printf("Yes.\n"); 40 for(i=0; i<num; i++) 41 { 42 if(flag[i]) //标记为1就进来一辆车,0则出去一辆车 43 printf("in\n"); 44 else 45 printf("out\n"); 46 } 47 } 48 else 49 printf("No.\n"); 50 printf("FINISH\n"); 51 } 52 return 0; 53 }
标签:
原文地址:http://www.cnblogs.com/pshw/p/4818302.html