Compartilhamento de tecnologia

Perguntas reais do exame baseado em computador da Huawei - jogo de basquete

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Descrição do tópico:

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";

Insira a descrição:

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.

Descrição da saída:

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;

Exemplo 1:

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"

Exemplo 2:

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

Exemplo 3:

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++:

  1. #include <iostream>
  2. #include <sstream>
  3. #include <queue>
  4. #include <string>
  5. #include <vector>
  6. using namespace std;
  7. int main() {
  8. ios::sync_with_stdio(false);
  9. cin.tie(nullptr);
  10. queue<int> ball, get;
  11. deque<int> list;
  12. string input;
  13. getline(cin, input); // 获取第一行数据,篮球的放入顺序
  14. stringstream ss(input);
  15. string temp;
  16. while (getline(ss, temp, ',')) {
  17. ball.push(stoi(temp));
  18. }
  19. getline(cin, input); // 获取第二行数据,篮球的取出顺序
  20. ss.clear();
  21. ss.str(input);
  22. while (getline(ss, temp, ',')) {
  23. get.push(stoi(temp));
  24. }
  25. int ballNum = 0; // 统计输入的字符串中篮球编号的个数
  26. for (int i = 0; i < input.size(); i++)
  27. {
  28. if (input[i] != ',') {
  29. ballNum++;
  30. }
  31. }
  32. string direction; // 对篮球的取出顺序进行记录
  33. while (!get.empty()) {
  34. if (list.empty() && !ball.empty()) {
  35. list.push_back(ball.front());
  36. ball.pop();
  37. }
  38. if (list.empty()) {
  39. break;
  40. }
  41. int tempL = list.front(), tempR = list.back();
  42. int temp = get.front();
  43. if (temp == tempL) {
  44. get.pop();
  45. list.pop_front();
  46. direction = direction + 'L';
  47. }
  48. else if (temp == tempR) {
  49. get.pop();
  50. list.pop_back();
  51. direction = direction + 'R';
  52. }
  53. else {
  54. if (ball.empty()) {
  55. break;
  56. }
  57. list.push_back(ball.front());
  58. ball.pop();
  59. }
  60. }
  61. // 输出取出顺序
  62. if (ballNum == direction.size()) {
  63. cout << direction << endl;
  64. }
  65. else {
  66. cout << "NO" << endl;
  67. }
  68. system("pause");
  69. return 0;
  70. }