私の連絡先情報
郵便メール:
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
幼稚園にひっくり返った樽があります。線状構造 、バスケットボールはバケツの右側にしか置くことができませんが、バスケットボールはバケツの左側または右側から取り出すことができます。それぞれのバスケットボールには個別の番号が付いています。教師は一度に 1 つ以上のバスケットボールを入れることができます。子供たちはバケツの中にバスケットボールが 1 つしか入っていない場合のみ取り出すことができます。バケツの左側から取り出します。
たとえば、教師が 1、2、3、4、5 の番号が付けられた 5 つのバスケットボールを順番に置くと、子供たちは「1、2、3、4、5」または「3、1、2、バスケットボールには順番に「4,5」と番号が振られていますが、「5,1,3,2,4」と番号が振られたバスケットボールは取り出すことができません。このうち、連番「3,1,2,4,5」の取り出しシナリオは、 1,2,3 を連続して入れる → 右から 3 番を取り出す → から 1 番を取り出す左→左から2番を取り出す→4番を入れる→左から4番を取り出す→5番を入れる→左から5番を取り出す。簡単のため、左から取り出すバスケットボールをL、右から取り出すバスケットボールをRとします。このときのバスケットボールの順序は「 RLLLL 」となります。
最初の行の数字は、教師が順番に配置するバスケットボールの番号として機能します。
2 行目の数字は、入れられた順序で取り出せるかどうかを確認するバスケットボールの番号として使用されます。
その中で、バスケットボールの番号はカンマで区切られています。
各バスケットボールの除去シーケンスについて、実際に取得できる場合は、左右の操作に従って除去シーケンスを出力してください。そうでない場合は、「NO」を出力してください。
特別な注意事項:
1. 1<= バスケットボールの数、バスケットボールの数<= 200;
2. バスケットボールの数字は繰り返されません。
3. 出力結果の LR は大文字である必要があります。
入力
4,5,6,7,0,1,2
6,4,0,1,2,5,7
出力
うわあああああ
注:バスケットボールを取り出す順番は「右、左、右、右、右、左、左」です。
入力
4,5,6,7,0,1,2
6,0,5,1,2,4,7
出力:
いいえ
説明: 該当配列のバスケットボールは取り出せません
入力
1,2,3,4
1,2,3,5
出力
いいえ
説明: 5 番のバスケットボールがないため、対応する番号のデータを取得できません。
C++ ソース コード:
- #include <iostream>
- #include <sstream>
- #include <queue>
- #include <string>
- #include <vector>
-
- using namespace std;
-
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
-
- queue<int> ball, get;
- deque<int> list;
- string input;
- getline(cin, input); // 获取第一行数据,篮球的放入顺序
- stringstream ss(input);
- string temp;
-
- while (getline(ss, temp, ',')) {
- ball.push(stoi(temp));
- }
-
- getline(cin, input); // 获取第二行数据,篮球的取出顺序
- ss.clear();
- ss.str(input);
- while (getline(ss, temp, ',')) {
- get.push(stoi(temp));
- }
-
- int ballNum = 0; // 统计输入的字符串中篮球编号的个数
- for (int i = 0; i < input.size(); i++)
- {
- if (input[i] != ',') {
- ballNum++;
- }
- }
-
- string direction; // 对篮球的取出顺序进行记录
- while (!get.empty()) {
- if (list.empty() && !ball.empty()) {
- list.push_back(ball.front());
- ball.pop();
- }
- if (list.empty()) {
- break;
- }
- int tempL = list.front(), tempR = list.back();
- int temp = get.front();
- if (temp == tempL) {
- get.pop();
- list.pop_front();
- direction = direction + 'L';
- }
- else if (temp == tempR) {
- get.pop();
- list.pop_back();
- direction = direction + 'R';
- }
- else {
- if (ball.empty()) {
- break;
- }
- list.push_back(ball.front());
- ball.pop();
- }
- }
-
- // 输出取出顺序
- if (ballNum == direction.size()) {
- cout << direction << endl;
- }
- else {
- cout << "NO" << endl;
- }
-
- system("pause");
- return 0;
- }