Compartir tecnología

Preguntas reales del examen por computadora de Huawei: juego de baloncesto

2024-07-12

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

Tema Descripción:

En el jardín de infancia hay un barril volcado.estructura lineal , la pelota de baloncesto solo se puede colocar en el lado derecho del balde, pero se puede sacar del lado izquierdo o derecho del balde. Cada pelota de baloncesto tiene un número separado. El maestro puede colocar una o más pelotas de baloncesto a la vez. Los niños pueden sacar la pelota del lado izquierdo o derecho del cubo. Cuando solo hay una pelota de baloncesto en el cubo, solo pueden tomarla. sáquelo por el lado izquierdo del cubo.

Por ejemplo, si el maestro pone en orden cinco pelotas de baloncesto numeradas 1, 2, 3, 4 y 5, entonces los niños pueden sacar los números "1, 2, 3, 4, 5" o "3, 1, 2, Las pelotas de baloncesto numeradas secuencialmente “4,5”, pero las pelotas de baloncesto numeradas “5,1,3,2,4” no se pueden sacar. Entre ellos, el escenario para sacar el número de secuencia "3,1,2,4,5" es: poner los números 1,2,3 continuamente -> sacar el número 3 de la derecha -> sacar el número 1 de la izquierda -> saca el número 2 de la izquierda -> Pon el No. 4 -> Saca el No. 4 de la izquierda -> Pon el No. 5 -> Saca el No. 5 de la izquierda. Para simplificar, usamos L para representar la pelota de baloncesto sacada por la izquierda y R para representar la pelota de baloncesto sacada por la derecha. El orden de las pelotas de baloncesto en este momento La secuencia recuperada es " RLLLL ";

Introduzca la descripción:

Los números de la primera fila sirven como números de baloncesto que el maestro pone en secuencia;
Los números de la segunda línea se utilizan como números de baloncesto que se deben verificar para ver si se pueden sacar en el orden en que se colocaron;
Entre ellos, los números de baloncesto están separados por comas.

Descripción de salida:

Para la secuencia de extracción de cada pelota de baloncesto, si realmente se puede obtener, imprima la secuencia de extracción de acuerdo con las operaciones izquierda y derecha; de lo contrario, imprima "NO";

artículos de atención especial:
1. 1<=el número de pelotas de baloncesto, el número de pelotas de baloncesto<=200;
2. Los números de la pelota de baloncesto no se repiten;
3. LR en los resultados de salida debe estar en mayúsculas;

Ejemplo 1:

ingresar
4,5,6,7,0,1,2
6,4,0,1,2,5,7


producción
RLLRRLL
Nota: El orden de sacar la pelota de baloncesto es "derecha, izquierda, derecha, derecha, derecha, izquierda, izquierda".

Ejemplo 2:

ingresar
4,5,6,7,0,1,2
6,0,5,1,2,4,7


Producción:
NO
Descripción: No se puede sacar la pelota de baloncesto de la secuencia correspondiente

Ejemplo 3:

ingresar
1,2,3,4
1,2,3,5


producción
NO
Explicación: No hay ninguna pelota de baloncesto con el número 5, por lo que no se pueden recuperar los datos numerados correspondientes.

Código fuente 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. }