informasi kontak saya
Surat[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Ada tong terbalik di taman kanak-kanakstruktur linier , bola basket hanya dapat diletakkan di sisi kanan ember, namun bola basket dapat dikeluarkan di sisi kiri atau kanan ember. Setiap bola basket memiliki nomor tersendiri. Guru dapat memasukkan satu atau lebih bola basket sekaligus. Anak-anak dapat mengeluarkan bola basket di sisi kiri atau kanan ember. Jika hanya ada satu bola basket di dalam ember, mereka hanya dapat mengambil itu keluar dari sisi kiri ember.
Misalnya guru menyusun lima buah bola basket bernomor 1, 2, 3, 4, dan 5 secara berurutan, maka anak dapat mengambil nomor “1, 2, 3, 4, 5” atau “3, 1, 2, Bola basket tersebut diberi nomor urut “4,5”, tetapi bola basket yang diberi nomor “5,1,3,2,4” tidak dapat dikeluarkan. Diantaranya skenario pengambilan nomor urut “3,1,2,4,5” adalah : memasukkan nomor 1,2,3 terus menerus -> mengeluarkan nomor 3 dari kanan -> mengeluarkan nomor 1 dari kiri -> keluarkan nomor 2 dari kiri -> Masukkan nomor 4 -> keluarkan nomor 4 dari kiri -> masukkan nomor 5 -> keluarkan nomor 5 dari kiri kesederhanaannya, kita menggunakan L untuk mewakili bola basket yang diambil dari kiri, dan R untuk mewakili bola basket yang diambil dari kanan. Urutan bola basket saat ini Urutan yang diambil adalah " RLLLL ";
Angka-angka pada baris pertama berfungsi sebagai nomor bola basket yang disusun guru secara berurutan;
Angka-angka pada baris kedua digunakan sebagai nomor bola basket yang akan diperiksa apakah dapat dikeluarkan sesuai urutan pemasukannya;
Diantaranya, nomor bola basket dipisahkan dengan koma.
Untuk urutan pelepasan setiap bola basket, jika memang dapat diperoleh, silahkan cetak urutan pelepasan sesuai operasi kiri dan kanan, jika tidak maka cetak "TIDAK";
item perhatian khusus:
1. 1<=jumlah bola basket, jumlah bola basket<=200;
2. Angka-angka pada bola basket tidak berulang;
3. LR pada hasil keluaran harus menggunakan huruf besar;
memasuki
4,5,6,7,0,1,2
6,4,0,1,2,5,7
keluaran
RRRRRLL
Catatan: Urutan mengeluarkan bola basket adalah "kanan, kiri, kanan, kanan, kanan, kiri, kiri"
memasuki
4,5,6,7,0,1,2
6,0,5,1,2,4,7
Keluaran:
TIDAK
Deskripsi: Bola basket dengan urutan yang sesuai tidak dapat dikeluarkan
memasuki
1,2,3,4
1,2,3,5
keluaran
TIDAK
Penjelasan: Tidak ada bola basket yang bernomor 5, sehingga data bernomor yang bersangkutan tidak dapat diambil.
Kode sumber 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;
- }