小猴编程周赛C++ | 2023年春第9周T3浏览器

学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!

附上汇总贴:小猴编程C++ | 汇总-CSDN博客


【题目描述】

小猴为了提高自己的实力,经常在各大网站刷题。然后他发现浏览器都会有三个操作:访问、前进和后退,小猴很好奇这三种操作的工作原理,在网上查询相关资料并结合自己的实践之后,发现它们的工作原理如下:

访问:访问操作需要用户提供一个网址,浏览器将会访问该网址,并将该网址的前继设为跳转前的网址。

后退:后退操作会检查当前网址是否有前继(除第一个网址外,每个网址都有前继),如果有,浏览器将访问当前网址的前继。

前进:前进操作时用于抵消后退的:

  • 若前一步是后退,浏览器退回后退前的网页。
  • 若前一步是访问,忽略这条前进操作(即前进的按钮未灰色,无法点击)。
  • 若前一步也是前进,若上一步前进已经抵消了一个后退,则根据更早的操作确定前进的作用,否则,忽略这条操作。

现在小猴给定 n 条操作,请你模拟浏览器的行为,并输出它执行每条操作时所访问的网址。

【输入】

第一行,包含一个整数 n

接下来 n 行,每行表示一步操作:

  • 访问操作:以字符 V 开头,后接一条网址,保证网址中间没有空格或者其他不可见字符。
  • 后退操作:以字符 B 表示。
  • 前进操作:以字符 F 表示。

【输出】

共 n 行,对每一步操作:

  • 如果浏览器访问了某个网址,则输出该网址;
  • 如果浏览器忽略了这步操作,则输出一个 ?。

【输入样例】

10
V noi.cn
V xiaohoucode.com
V baidu.com
B
B
F
F
F
V gesp.ccf.org.cn
F

【输出样例】

noi.cn
xiaohoucode.com
baidu.com
xiaohoucode.com
noi.cn
xiaohoucode.com
baidu.com
?
gesp.ccf.org.cn
?

【代码详解】

#include <bits/stdc++.h>
#include <stack>
using namespace std;
int n;
stack<string> A, B;
int main()
{
    cin >> n;
    for (int i=1; i<=n; i++) {
        char op;
        string s;
        cin >> op;
        if (op == 'V') {
            cin >> s;
            A.push(s);
            cout << s << endl;
            while (B.size()>0) B.pop();
        } else if (op=='B') {
            if (A.size()<2) cout << "?" << endl;
            else {
                B.push(A.top());
                A.pop();
                cout << A.top() << endl;
            }
        } else {
            if (B.size()==0) cout << "?" << endl;
            else {
                A.push(B.top());
                B.pop();
                cout << A.top() << endl;
            }
        }
    }
    return 0;
}

【运行结果】

10
V noi.cn
noi.cn
V xiaohoucode.com
xiaohoucode.com
V baidu.com
baidu.com
B
xiaohoucode.com
B
noi.cn
F
xiaohoucode.com
F
baidu.com
F
?
V gesp.ccf.org.cn
gesp.ccf.org.cn
F
?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值