minhas informações de contato
Correspondência[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Há um barril virado no jardim de infância.estrutura linear , a bola de basquete só pode ser colocada no lado direito do balde, mas a bola de basquete pode ser retirada no lado esquerdo ou direito do balde. Cada bola de basquete tem um número separado. O professor pode colocar uma ou mais bolas de basquete de cada vez. As crianças podem tirar a bola de basquete do lado esquerdo ou direito do balde. do lado esquerdo do balde.
Por exemplo, se o professor colocar cinco bolas de basquete numeradas 1, 2, 3, 4 e 5 em ordem, as crianças poderão retirar os números "1,2,3,4,5" ou "3,1,2, As bolas de basquete numeradas "4,5", mas as bolas de basquete numeradas "5,1,3,2,4" não podem ser retiradas. Entre eles, o cenário de retirada do número de sequência "3,1,2,4,5" é: colocar os números 1,2,3 continuamente -> retirar o número 3 da direita -> retirar o número 1 da a esquerda -> retire o número 2 da esquerda -> Coloque o número 4 -> Retire o número 4 da esquerda -> Coloque o número 5 -> Retire o número 5 da esquerda Por uma questão de. Para simplificar, usamos L para representar a bola de basquete retirada da esquerda e R para representar a bola de basquete tirada da direita. A ordem das bolas de basquete neste momento A sequência recuperada é "RLLLL";
Os números da primeira linha servem como números do basquete que o professor coloca em sequência;
Os números da segunda linha são usados como números de basquete a serem verificados para ver se podem ser retirados na ordem em que foram colocados;
Entre eles, os números do basquete são separados por vírgulas.
Para a sequência de retirada de cada bola de basquete, caso seja possível obtê-la, imprima a sequência de retirada de acordo com as operações esquerda e direita, caso contrário, imprima “NÃO”;
itens de atenção especial:
1. 1<=o número da bola de basquete, o número de bolas de basquete<=200;
2. Os números da bola de basquete não se repetem;
3. LR nos resultados de saída deve estar em letras maiúsculas;
digitar
4,5,6,7,0,1,2
6,4,0,1,2,5,7
saída
RLRRRLL
Nota: A ordem de retirada da bola de basquete é "direita, esquerda, direita, direita, direita, esquerda, esquerda"
digitar
4,5,6,7,0,1,2
6,0,5,1,2,4,7
Saída:
NÃO
Descrição: A bola de basquete da sequência correspondente não pode ser retirada
digitar
1,2,3,4
1,2,3,5
saída
NÃO
Explicação: Não existe uma bola de basquete com o número 5, portanto, os dados numerados correspondentes não podem ser recuperados.
Código-fonte 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;
- }