Condivisione della tecnologia

Domande reali sull'esame basato su computer Huawei: partita di basket

2024-07-12

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

Descrizione argomento:

C'è una botte rovesciata nell'asilo. È astruttura lineare , il pallone da basket può essere posizionato solo sul lato destro del secchio, ma può essere estratto dal lato sinistro o destro del secchio. Ogni pallone da basket ha un numero separato. L'insegnante può inserire uno o più palloni da basket alla volta. I bambini possono tirare fuori il pallone dal lato sinistro o destro del secchio. Quando c'è solo un pallone da basket nel secchio, possono prenderne solo uno fuori dal lato sinistro del secchio.

Ad esempio, se l'insegnante mette in ordine cinque palloni da basket numerati 1, 2, 3, 4 e 5, i bambini potranno estrarre i numeri "1, 2, 3, 4, 5" o "3, 1, 2, I palloni numerati "4,5", ma i palloni numerati "5,1,3,2,4" non possono essere eliminati. Tra questi, lo scenario di estrazione del numero di sequenza "3,1,2,4,5" è: inserire i numeri 1,2,3 continuamente -> estrarre il numero 3 da destra -> estrarre il numero 1 da sinistra -> estrarre il numero 2 da sinistra -> inserire il n. 4 -> estrarre il n. 4 da sinistra -> inserire il n. 5 -> estrarre il n. 5 da sinistra Per il bene di semplicità, usiamo L per rappresentare il pallone da basket estratto da sinistra, e R per rappresentare il pallone da basket estratto da destra L'ordine dei palloni da basket in questo momento La sequenza recuperata è " RLLLL ";

Inserisci la descrizione:

I numeri della prima fila servono come numeri del basket che l'insegnante mette in sequenza;
I numeri della seconda riga vengono utilizzati come numeri di basket da verificare per vedere se possono essere estratti nell'ordine in cui sono stati inseriti;
Tra questi, i numeri del basket sono separati da virgole.

Descrizione dell'uscita:

Per la sequenza di rimozione di ogni pallone, se effettivamente è possibile ottenerla, stampare la sequenza di rimozione secondo le operazioni di destra e sinistra altrimenti stampare "NO";

articoli di attenzione speciale:
1. 1<=il numero del pallone da basket, il numero di palloni da basket<=200;
2. I numeri sul pallone da basket non si ripetono;
3. LR nei risultati di output deve essere in maiuscolo;

Esempio 1:

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


produzione
RLRRRLL
Nota: l'ordine di estrazione del pallone da basket è "destra, sinistra, destra, destra, destra, sinistra, sinistra"

Esempio 2:

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


Produzione:
NO
Descrizione: La palla da basket della sequenza corrispondente non può essere eliminata

Esempio 3:

accedere
1,2,3,4
1,2,3,5


produzione
NO
Spiegazione: Non esiste un pallone da basket numerato 5, quindi i dati numerati corrispondenti non possono essere recuperati.

Codice sorgente 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. }