栈的简单应用,注意下标问题!!! 很脑残的说,居然没把printf("%d/n",j);注释掉,白wa了两次!十足悲剧! #include<stdio.h> #include<string.h> char a[20],b[20]; int ta[20],tb[20]; int sta[30],n,pre[200],prek; int find() { memset(pre,0,sizeof(pre)); int i,j,k; int top; sta[0]=20; prek=0; i=0;j=0;k=0; sta[1]=ta[i]; top=1; pre[0]=1; while(k!=n&&j<n) { if(sta[top]==tb[j]&&j<n) { while(sta[top]==tb[j]&&j<n&&top>0) { k++;j++;top--; prek++; pre[prek]=0; } } else { top++;i++;prek++; pre[prek]=1; sta[top]=ta[i]; } } // printf("%d/n",j);忘了注释掉!!!!!! if(top==0) return 1; return 0; } void display() { int i; for(i=0;i<=prek;i++) if(pre[i]) printf("in/n"); else printf("out/n"); } int main() { int i; while(scanf("%d",&n)!=EOF) { scanf("%s",&a); scanf("%s",&b); for(i=0;i<n;i++) { ta[i]=a[i]-'0'; tb[i]=b[i]-'0'; } if(find()) { printf("Yes./n"); display(); } else printf("No./n"); printf("FINISH/n"); } return 0; }