hdu 1022 栈
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1022
题意梗概:
火车进桥出桥问题,最多有9辆火车进出,遵循先进后出的原则,就是一个栈的问题,输入两排数一个是进站顺序,一个是出站顺序,如果能实现,就输出Yes. ,并且输出进出站的顺序,否则输出No. ,最后输出FINISH
本题的关键是一定有一段进站出站倒序,也就是不一定等所有的车出来就让前面的车出去。
现在给出AC代码:
#include<stdio.h> #include<string.h> int main() { int a[20],c[10]; char s1[10],s2[10]; int n; while(scanf("%d%s%s",&n,&s1,&s2)!=EOF) { int j=0,k=0,t=0; for(int i=0;i<n;i++)//找倒序的段 { a[t++]=1; c[k++]=s1[i]; while(c[k-1]==s2[j]&&k>=0) { k--; j++; a[t++]=-1; } } if(k<=0) { printf("Yes.\n"); for(int i=0;i<t;i++) { if(a[i]==1)printf("in\n"); else if(a[i]==-1)printf("out\n"); } } else printf("No.\n"); printf("FINISH\n"); } return 0; }

浙公网安备 33010602011771号