本文主要是介绍1hdu022数据结构堆栈-火车进站,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*判断一串序列能否按照堆栈的方式,进出栈之后得到另外一组序列*/
/*要把题目当做已知进出序列进行对比*/
#include<iostream> #include<cstdio> #include<cstring> using namespace std; struct node {char st[4]; }str[10000]; int main() {int n,i,j,t,k,ok;char stack[10000];char come[10000],leave[10000];while(scanf("%d",&n)!=EOF){i=j=t=k=0;ok=1;scanf("%s%s",come,leave);while(j<n){//思考方式为用两个数组保存两个序列 出---->进栈if(come[i]==leave[j]){i++;j++;strcpy(str[k++].st,"in");strcpy(str[k++].st,"out");}
//如果序列相同,说明时进栈后直接出栈else if(stack[t]==leave[j]&&t){j++;t--;strcpy(str[k++].st,"out");}
//如果栈首元素和出的序列相同,那么是从栈出的else if(i<n){stack[++t]=come[i];i++;strcpy(str[k++].st,"in");}
//如果进栈的元素没有到尾,说明还有要进栈的else {ok=0;break;}
//否则,没有满足的序列}if(ok){t=0;printf("Yes.\n");while(t<k){printf("%s\n",str[t++].st);}printf("FINISH\n");}else printf("No.\nFINISH\n");}return 0; }
这篇关于1hdu022数据结构堆栈-火车进站的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!