hdu 1022 Train problem I(栈~~)
2011-11-29 21:02
447 查看
题意:
给定俩个个N长的串,第一个是源,第二个是目标。问能否得到目标序列,能的话再输出序列的进出情况。
分析:
比zoj 1259 稍微复杂点,但题目容易理解多了。。。^_^
输出序列的话,用个数组存下进出情况就ok了。
因为格式问题 ,2Y。
给定俩个个N长的串,第一个是源,第二个是目标。问能否得到目标序列,能的话再输出序列的进出情况。
分析:
比zoj 1259 稍微复杂点,但题目容易理解多了。。。^_^
输出序列的话,用个数组存下进出情况就ok了。
因为格式问题 ,2Y。
#include <iostream> #include <stack> #include <string> #include <cstdio> using namespace std; int main() { int N; stack<int > pp; int i,j,k,top; string str1,str2; int a[12],b[12],c[24]; while(~scanf("%d",&N)) { k=0; if(a[1]==0) break; memset(c,0,sizeof(c)); while(!pp.empty ()) pp.pop();//栈的置空啊!!!! cin>>str1; for(i=0;i<str1.size() ;i++) a[i+1]=str1[i]-'0'; cin>>str2; for(i=0;i<str2.size();i++) b[i+1]=str2[i]-'0'; i=1; pp.push (a[i]); c[k++]=0; while(!pp.empty ()) { for(j=2;j<=N;j++) { top=pp.top (); while(top==b[i]) { pp.pop (); c[k++]=1; if(!pp.empty ()) top=pp.top(); i++; } pp.push(a[j]); c[k++]=0; } while(1)//出栈 { top=pp.top (); if(b[i]!=top) break; else { pp.pop(); c[k++]=1; i++; } if(pp.empty ()) break; } break; } if(pp.empty ()) { cout<<"Yes."<<endl; for(i=0;i<2*str1.size ();i++) { if(c[i]==0) cout<<"in"<<endl; else cout<<"out"<<endl; } } else cout<<"No."<<endl; cout<<"FINISH"<<endl; } return 0; }
相关文章推荐
- HDU 1022 Train Problem I (STL - 栈的使用)
- hdu 1022 Train Problem I
- 【栈】hdu 1022 Train Problem I(外:poj 1383 Rails)
- HDU:1022 Train Problem I
- HDU 1022 Train Problem I
- HDU 1022 Train Problem I
- HDU1022 Train Problem I
- HDU 1022 Train Problem I【栈】
- hdu 1022 Train Problem I
- Train Problem I hdu 1022
- Train Problem I hdu 1022 栈
- HDU 1022 Train Problem I (模拟栈)
- HDU1022 Train Problem I
- HDU1022——Train Problem I(栈 stack)
- hdu-Train Problem I-1022
- hdu 1022 Train Problem I 解题报告
- HDU-1022 Train Problem I
- HDU1022--Train Problem I(栈的应用)
- HDU1022 Train Problem I
- HDU 1022 Train Problem I