1 #include<stdio.h> 2 int main() 3 { 4 int n,i,j,k; 5 char in[10],out[10]; 6 int flag[20]; 7 while(scanf("%d %s %s",&n,in,out)!=EOF) 8 { 9 char stack[1000];//stack维持着正常的进出栈 10 int top=-1;//栈顶 11 i=j=k=0; 12 while(j<n+1&&i<n) 13 { 14 if(top!=-1&&stack[top]==out[i]) 15 { 16 top--; 17 flag[k]=0; 18 k++; 19 i++; 20 } 21 else 22 { 23 top++; 24 flag[k]=1; 25 k++; 26 stack[top]=in[j]; 27 j++; 28 } 29 } 30 if(k!=2*n) 31 printf("No.\n"); 32 else 33 { 34 printf("Yes.\n"); 35 for(i=0; i<n*2; i++) 36 { 37 if(flag[i]) 38 printf("in\n"); 39 else 40 printf("out\n"); 41 } 42 } 43 printf("FINISH\n"); 44 45 } 46 return 0; 47 }
原文:http://www.cnblogs.com/wjzh/p/4856589.html