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 }
posted @ 2012-10-08 17:44  长溪  阅读(149)  评论(0编辑  收藏  举报