내 연락처 정보
우편메소피아@프로톤메일.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
유치원에 뒤집힌 통이 있습니다.선형 구조 , 농구공은 물통의 오른쪽에만 놓을 수 있지만 농구공은 물통의 왼쪽이나 오른쪽에 꺼낼 수 있습니다. 각 농구공에는 별도의 번호가 있습니다. 교사는 한 번에 하나 이상의 농구공을 넣을 수 있습니다. 어린이는 양동이에 농구공이 하나만 있을 경우에만 농구공을 꺼낼 수 있습니다. 양동이의 왼쪽에서 꺼냅니다.
예를 들어, 교사가 1, 2, 3, 4, 5의 숫자가 적힌 농구공 5개를 순서대로 놓으면 아이들은 "1, 2, 3, 4, 5" 또는 "3, 1, 2,"라는 숫자를 꺼낼 수 있습니다. 번호가 "4,5"로 순차적으로 적혀있는 농구공이 있는데, "5,1,3,2,4"로 번호가 붙은 농구공은 빼낼 수 없습니다. 그 중 순번 "3,1,2,4,5"의 꺼내기 시나리오는 1,2,3번을 연속으로 넣기 -> 오른쪽에서 3번 빼기 -> 오른쪽에서 1번 빼기이다. 왼쪽 -> 왼쪽에서 2번 빼기 -> 4번 넣기 -> 왼쪽에서 4번 빼기 -> 5번 넣기 -> 왼쪽에서 5번 빼기. 간단하게 말하면 L을 사용하여 왼쪽에서 꺼낸 농구공을 나타내고 R을 사용하여 오른쪽에서 꺼낸 농구공을 나타냅니다. 이때 검색된 농구공의 순서는 " RLLLL "입니다.
첫 번째 줄의 숫자는 교사가 순서대로 입력하는 농구 번호 역할을 합니다.
두 번째 줄의 숫자는 넣은 순서대로 꺼낼 수 있는지 확인하기 위해 농구 번호로 사용됩니다.
그 중 농구 번호는 쉼표로 구분되어 있습니다.
각 농구공의 제거 순서에 대해 실제로 얻을 수 있는 경우 왼쪽 및 오른쪽 작업에 따라 제거 순서를 인쇄하십시오. 그렇지 않으면 "NO"를 인쇄하십시오.
특별한 주의사항:
1. 1<=농구 수, 농구 수<=200;
2. 농구공의 숫자는 반복되지 않습니다.
3. 출력 결과의 LR은 대문자여야 합니다.
입력하다
4,5,6,7,0,1,2
6,4,0,1,2,5,7
산출
럴럴럴
참고: 농구공을 꺼내는 순서는 "오른쪽, 왼쪽, 오른쪽, 오른쪽, 오른쪽, 왼쪽, 왼쪽"입니다.
입력하다
4,5,6,7,0,1,2
6,0,5,1,2,4,7
산출:
아니요
설명: 해당 순서의 농구공은 꺼낼 수 없습니다.
입력하다
1,2,3,4
1,2,3,5
산출
아니요
설명: 5번 농구공이 없으므로 해당 번호 데이터를 검색할 수 없습니다.
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;
- }