幼い頃からC++を学びましょう!Xueersi Monkey プログラミングの学習プロセスにおける質問を記録し、あらゆる瞬間を記録します。いかなる侵害も直ちに削除されますので、ご支援のほどよろしくお願いいたします。
概要の投稿を添付します: Little Monkey プログラミング C++ | 概要-CSDN ブログ
[タイトル説明]
シャオホウは自分の強さを向上させるために、主要なウェブサイトで質問に答えることがよくあります。それから彼は、ブラウザには 3 つの操作があることを発見しました: アクセス、進む、戻るその動作原理は次のとおりです。
アクセス: アクセス操作では、ユーザーが URL を指定する必要があります。ブラウザは URL にアクセスし、URL の前の URL をジャンプ前の URL として設定します。
Back : Back 操作では、現在の URL に先行 URL があるかどうかがチェックされます (最初の URL を除くすべての URL に先行 URL があります)。先行 URL がある場合、ブラウザは現在の URL の先行 URL にアクセスします。
Forward : 前進操作中の後退移動をオフセットするために使用されます。
- 前のステップに戻る場合、ブラウザは戻る前の Web ページに戻ります。
- 前のステップがアクセスの場合、この進む操作は無視してください (つまり、進むボタンは灰色ではなく、クリックできません)。
- 前のステップも順方向であり、前の順方向ステップが逆方向ステップをオフセットした場合、順効果は前の操作に基づいて決定されます。そうでない場合、この操作は無視されます。
ここで、子猿に n 回の 操作が与えられています。ブラウザの動作をシミュレートし、各操作を実行するときにアクセスする URL を出力してください。
【入力】
最初の行には整数 nが含まれています。
次の n 行は、各行が操作のステップを表します。
- アクセス操作: 文字 V で始まり、URL が続きます。URL の途中にスペースやその他の非表示の文字が含まれていないことを確認します。
- バック操作: 文字 B で表されます。
- 順方向操作: 文字 F で表されます。
【出力】
各ステップの合計n 行 :
- ブラウザが特定の URL にアクセスすると、その URL が出力されます。
- ブラウザがこのステップを無視すると、? が出力されます。
【入力サンプル】
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
?