zoukankan      html  css  js  c++  java
  • 希望

    【题目描述】
    网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,
    “前进栈”、“后退栈”。
    这里你需要实现以下几个功能:
    BACK: 如果“后退栈”为空则忽略此命令。否则将当前两面压入“前进栈”,
    从“后退栈”中取出栈顶页面,并设置为当前页面。
    FORWARD: 如果“前进栈”为空则忽略此命令。否则将当前两面压入“后
    退栈”,从“前进栈”中取出栈顶页面,并设置为当前页面。
    VISIT: 将当前页面压入“后退栈”、并将当前页面置为指定页面,并将“前
    进栈”置空。
    QUIT: 退出。
    假设此浏览器初始页面为 http://www.acm.org/
    【输入格式】
    输入为一系列命令:BACK, FORWARD, VISIT 和 QUIT,页面网址为不含空
    格的字符串
    假设任一时刻任意时刻两个栈中的元素都不会超过 100。
    最后一个命令为 QUIT。
    【输出格式】
    输对于除 QUIT 外所有命令,输出当前页面(网址)
    如果该命令被忽略则输出“Ignored”。
    【样例输入】
    VISIT http://acm.ashland.edu/
    VISIT http://acm.baylor.edu/acmicpc/
    BACK
    BACK
    BACK
    FORWARD
    VISIT http://www.ibm.com/
    BACK
    BACK
    FORWARD
    FORWARD
    FORWARD
    QUIT
    P69 希望
    第 3 页 共 6 页
    【样例输出】
    http://acm.ashland.edu/
    http://acm.baylor.edu/acmicpc/
    http://acm.ashland.edu/
    http://www.acm.org/
    Ignored
    http://acm.ashland.edu/
    http://www.ibm.com/
    http://acm.ashland.edu/
    http://www.acm.org/
    http://acm.ashland.edu/
    http://www.ibm.com/
    Ignored
    【样例解释】
    无。
    【数据范围与规定】
    对于100%的数据,操作数量不超过1000,每行字符串长度不超过500

    思路:  模拟

    #include<iostream>
    #include<cstdio>
    #include<queue>
    #include<math.h>
    #include<cstring>
    #define LL long long 
    using namespace std;
    char s[500];
    string ss;
    string q1[101],q2[101],now="http://www.acm.org/";
    int t1,t2;
    int main()
    {
        freopen("kami.in","r",stdin);
        freopen("kami.out","w",stdout);
        t1=0;t2=0; 
        while(1)
        {
            cin>>s;
            if(s[0]=='B')
            {
                if(t2==0)    
                {
                    printf("Ignored
    ");
                    continue;
                }
                q1[++t1]=now;
                now=q2[t2--];
            }else
            if(s[0]=='F')
            {
                if(t1==0)
                {            
                    printf("Ignored
    ");
                    continue;                
                }
                q2[++t2]=now;
                now=q1[t1--];
            }else
            if(s[0]=='V')
            {
                cin>>ss;
                q2[++t2]=now;
                now=ss;
                t1=0; 
            }else
            if(s[0]=='Q')
                return 0;
            cout<<now<<endl;
        }
        return 0;
    }

    输入
    BACK
    VIST 1
    BACK
    FORWARD
    QUIT

    输出

    Ignored
    1
    http://www.acm.org/
    1

  • 相关阅读:
    jdk和dubbo的SPI机制
    何谓架构
    ElasticSearch的API使用
    LFU的基本原理与实现
    如何判断单向链表有环?
    mysql执行过程以及顺序
    原来 TinyPNG 可以这样玩!
    deno + mongodb 实战踩坑记
    好消息,vue3.0 进入 beta 阶段!
    听说会做这道题的人后来都进了头条?
  • 原文地址:https://www.cnblogs.com/CLGYPYJ/p/7611651.html
Copyright © 2011-2022 走看看