train problem
if
else if
else
一开始语序反了。。
View Code
1 #include<stdio.h> 2 #include<stdlib.h> 3 int main() 4 { 5 char *in,*out,*middle; 6 int top=0,i=0,j=0,k=0,n,p; 7 int *flag,ok=1; 8 printf("input the n:\n"); 9 scanf("%d",&n); 10 in=(char*)malloc(sizeof(char)*n); 11 out=(char*)malloc(sizeof(char)*n); 12 flag=(int*)malloc(sizeof(int)*2*n); 13 middle=(char*)malloc(sizeof(char)*n); 14 printf("input the two strings\n"); 15 scanf("%s%s",in,out); 16 while(j<n) 17 { 18 if(in[i]==out[j]) 19 { 20 i++; 21 j++; 22 flag[k++]=0; 23 flag[k++]=1; 24 } 25 else if(top!=0 && middle[top-1]==out[j]) 26 { 27 top--; 28 j++; 29 flag[k++]=1; 30 } 31 else if(in[i]!=out[j]) 32 { 33 middle[top++]=in[i]; 34 i++; 35 flag[k++]=0; 36 } 37 else 38 { 39 ok=0; 40 break; 41 } 42 } 43 if(ok==0) 44 printf("No.\n"); 45 else 46 { 47 for(p=0;p<k;p++) 48 { 49 if(flag[p]==0) 50 printf("in "); 51 else 52 printf("out "); 53 } 54 } 55 return 0; 56 }