zoukankan      html  css  js  c++  java
  • goj 堆箱子咯(栈)

    Problem Description:

    双十一大家都在买买买,可忙坏了快递小哥了。zl和皮卡鸡在大伙在剁手的时候,偷偷去快递公司那当兼职赚钱了。zl将箱子一个个叠起来,皮卡鸡将那堆箱子搬到别的地方去,但由于箱子太重,他每次只能拿最上面的一个。zl一边叠箱子,皮卡鸡就一边把目前最上面的箱子搬走,但由于动作快慢不一,有时候zl叠了几个箱子皮卡鸡才搬走一个,有时候皮卡鸡搬走几个箱子,zl才叠上去一个……那么问题来了,根据zl叠箱子的顺序,皮卡鸡搬箱子的顺序可不可能实现?(每个箱子都以一个字符编号,每个字符各不相同)

    Input:

    输入包含多组数据。
    每组数据第一行输入一个整数n(3<n<100),表示箱子的个数,第二行输入一串字符s,表示zl叠箱子的顺序,第三行输入一串字符c,表示皮卡鸡搬箱子的顺序

    Output:

    如果可以实现,输出“yes”,否则输出“no”,每个输出占一行,不包括双引号。

    Sample Input:

    5
    12345
    54321
    5
    12345
    14235

    Sample Output:

    yes
    no
    解题思路:判断出栈序列是否为入栈序列的一种,详细题解看这:ACM_栈的压入、弹出序列
    AC代码:
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 bool IsPopOrder(string Push,string Pop) {
     4     if(Push.size()==0)return false;
     5     vector<char> vec;
     6     for(size_t i=0,j=0;i<Push.size();++i){
     7         vec.push_back(Push[i]);
     8         while(j<Pop.size()&&Pop[j]==vec.back()){vec.pop_back();j++;}
     9     }
    10     return vec.empty();
    11 }
    12 int main(){
    13     string pushlist,poplist;int t;
    14     while(cin>>t){getchar();
    15         cin>>pushlist>>poplist;
    16         if(IsPopOrder(pushlist,poplist))cout<<"yes"<<endl;
    17         else cout<<"no"<<endl;
    18     }
    19     return 0;
    20 }
  • 相关阅读:
    根据系统的pid查询sql语句
    DORADO实现动态拼装查询条件
    一个Spring的配置管理接口
    MS SQL Server Management Studio连接到SQL Server命名实例的方法
    WSDL学习笔记
    显示MyBatis/Ibatis的SQL语句
    测试代码显示
    C#中一个项目中无法引用另外一个项目中的类的问题
    Learn How To Use LogMiner(Practice)
    WIN2003 IIS6 FastCGI php5.33配置重点
  • 原文地址:https://www.cnblogs.com/acgoto/p/9240879.html
Copyright © 2011-2022 走看看