NYOJ 150 Train Problem I STL栈
生活随笔
收集整理的這篇文章主要介紹了
NYOJ 150 Train Problem I STL栈
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Train Problem I
時(shí)間限制:3000?ms ?|? 內(nèi)存限制:65535?KB 難度:2 描述輸入
樣例輸出
Yes. in in in out out out FINISH No. FINISH
題意:給出兩個(gè)字符串,問(wèn)第一個(gè)字符串能否經(jīng)過(guò)棧轉(zhuǎn)化為第二個(gè)字符串。?如果可以,輸出進(jìn)棧和出棧的順序。
? ? ? 這是一個(gè)關(guān)于棧的問(wèn)題。棧是允許在同一端進(jìn)行插入和刪除操作的特殊線性表。允許進(jìn)行插入和刪除操作的一端稱為棧頂(top),另一端為棧底(bottom);棧底固定,而棧頂浮動(dòng);棧中元素個(gè)數(shù)為零時(shí)稱為空棧。插入一般稱為進(jìn)棧(PUSH),刪除則稱為退棧(POP)。棧也稱為后進(jìn)先出表。
#include<stdio.h> #include<string.h> #include<stack> /*定義棧*/ using namespace std; /*千萬(wàn)不要忘記*/ int main() {int n,i,j,k,flag[20];char s1[10],s2[10];stack<char> s;while(~scanf("%d%s %s",&n,s1,s2)){memset(flag,-1,sizeof(flag));j=k=0;for(i=0;i<n;i++){s.push(s1[i]);flag[k++]=1; /*1為進(jìn)棧,in*/while(!s.empty()&&s.top()==s2[j]) /*棧非空且棧頂元素與s2中的元素相等*/{flag[k++]=0; /*0為出棧,out*/s.pop(); /*清除棧頂元素*/j++; /*與s2中的下一個(gè)元素比較*/}}if(j==n) /*可以轉(zhuǎn)換*/{printf("Yes.\n");for(i=0;i<k;i++){if(flag[i]) /*flag[i]==1*/printf("in\n");elseprintf("out\n");}printf("FINISH\n");}else /*不能轉(zhuǎn)換*/printf("No.\nFINISH\n");}return 0; }
總結(jié)
以上是生活随笔為你收集整理的NYOJ 150 Train Problem I STL栈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 究竟什么时候该使用MQ?
- 下一篇: 如果面试官问你:Redis 内存满了怎么