• 希望


    【题目描述】

    网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,

    “前进栈”、“后退栈”。

    这里你需要实现以下几个功能:

    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

    【样例输出】

    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。

    【问题描述】

    令f(n)为斐波那契数列第?项,其中f(0) = f(1) = 1,f(n) = f(n −1) +

    f(n −2)。

    所以要干啥呢?

    求f(f(n))。

    【输入格式】

    第一行一个整数T代表数据组数。

    接下来T行每行一个整数n。

    【输出格式】

    T行每行一个整数代表答案对10 9 + 7取模的值。

    【样例输入】

    4

    0

    1

    2

    6

    【样例输出】

    0

    1

    1

    21

    【样例解释】

    无。

    【数据规模与约定】

    215 490。

    70%的数据,1 ≤ n≤ 10 5 。

    对于100%的数据,1 ≤ n≤ 10 3 ,1 ≤ n ≤ 10 100 。

    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<stack>
    using namespace std;
    int cnt;
    int k;
    char s[1005][505]={'h','t','t','p',':','/','/','w','w','w','.','a','c','m','.','o','r','g','/'};
    stack <int> h;
    stack <int> q;
    int main ()
    {
        while (scanf ("%s",s[++cnt]))
        {
            if (s[cnt][0]=='Q') return 0;
            if (s[cnt][0]=='B')
            {
                if (!h.empty())
                {
                    printf ("%s
    ",s[h.top()]);
                    q.push(k);
                    k=h.top();
                    h.pop();
                }
                else printf ("Ignored
    ");
            }
            if (s[cnt][0]=='F')
            {
                if (!q.empty())
                {
                    printf ("%s
    ",s[q.top()]);
                    h.push(k);
                    k=q.top();
                    q.pop();
                }
                else printf ("Ignored
    ");
            }
            
            if (s[cnt][0]=='V')
            {
                h.push(k);
                scanf ("%s",s[++cnt]);
                k=cnt;
                printf ("%s
    ",s[cnt]);
                while (!q.empty())
                    q.pop();
            }
        }
        return 0;
    }
    View Code
    I'm so lost but not afraid ,I've been broken and raise again
  • 相关阅读:
    shell 编写简单的整数计算器
    信号控制
    MySQL-索引及优化整理
    Java面试-Java容器有哪些
    C语言宏定义
    值类型与引用类型的区别
    C++虚函数简介
    DNS-域名解析
    扇区,簇,块区分
    Java合并两个数组为一个新数组
  • 原文地址:https://www.cnblogs.com/sjymj/p/5929633.html
Copyright © 2020-2023  润新知