С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/222: Рейтинг темы: голосов - 222, средняя оценка - 4.70
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 46

Сортировка вагонов

16.03.2018, 19:12. Показов 48510. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ограничение по времени работы программы: 1 секунда

К тупику со стороны пути 1 (см. рисунок) подъехал поезд. Разрешается отцепить от поезда один или сразу несколько первых вагонов и завезти их в тупик (при желании, можно даже завезти в тупик сразу весь поезд). После этого часть из этих вагонов вывезти в сторону пути 2. После этого можно завезти в тупик еще несколько вагонов и снова часть оказавшихся вагонов вывезти в сторону пути 2. И так далее (так, что каждый вагон может лишь один раз заехать с пути 1 в тупик, а затем один раз выехать из тупика на путь 2). Заезжать в тупик с пути 2 или выезжать из тупика на путь 1 запрещается. Нельзя с пути 1 попасть на путь 2, не заезжая в тупик.

Известно, в каком порядке изначально идут вагоны поезда. Требуется с помощью указанных операций сделать так, чтобы вагоны поезда шли по порядку (сначала первый, потом второй и т.д., считая от головы поезда, едущего по пути 2 в сторону от тупика). Напишите программу, определяющую, можно ли это сделать.
Входные данные

Первая строка входных данных содержит число N
— количество вагонов в поезде (1⩽N⩽100). Дальше идут номера вагонов в порядке от головы поезда, едущего по пути 1 в сторону тупика. Вагоны пронумерованы натуральными числами от 1 до N
, каждое из которых встречается ровно один раз.
Выходные данные

Если сделать так, чтобы вагоны шли в порядке от 1 до N, считая от головы поезда, когда поезд поедет по пути 2 из тупика, можно, выведите сообщение YES, если это сделать нельзя, выведите NO.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2018, 19:12
Ответы с готовыми решениями:

Сортировка Вагонов
Прошу помощи знатоков в решении задачи на питоне: Сортировка вагонов К тупику со стороны пути 1 (см. рисунок) подъехал поезд....

Дизайн вагонов
Всем привет! Можете помочь вот с такой задачкой: Вагоны новой кольцевой железной дороги было предложено расписать N дизайнерам. Каждый...

Сортировка вагонов
НАДО НАСТРОИТЬ ВВОД! У задача выглядит так: К тупику со стороны пути 1 (см. рисунок) подъехал поезд. Разрешается отцепить от поезда...

24
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 46
22.03.2018, 20:02  [ТС]
Помогите, пожалуйста
0
1741 / 913 / 480
Регистрация: 05.12.2013
Сообщений: 3,074
22.03.2018, 20:24
Тут много чего не хватает, рисунка, примеров выходных данных
0
0 / 0 / 0
Регистрация: 01.02.2018
Сообщений: 46
22.03.2018, 20:37  [ТС]
ок
ПРИМЕРЫ
ввод
3
3 2 1
вывод
YES
Надо весь поезд завезти в тупик, а затем целиком вывезти его на 2-й путь.
ввод
4
4 1 3 2
вывод
YES


Сначала надо в тупик завезти два вагона, один из которых оставит в тупике, а второй — вывезти на 2-й путь, после чего завезти в тупик еще два вагона и вывезти 3 вагона, стоящие в тупике, на 2-й путь
ввод
3
2 3 1
вывод
NO

Добавлено через 59 секунд
Рисунок не могу
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
23.03.2018, 05:24
Цитата Сообщение от Pasha0005 Посмотреть сообщение
Рисунок не могу
Хотя бы скрин экрана с рисунком.
0
3 / 3 / 0
Регистрация: 29.05.2020
Сообщений: 11
29.05.2020, 13:45
Вот нужная картинка
Миниатюры
Сортировка вагонов  
0
3 / 3 / 0
Регистрация: 29.05.2020
Сообщений: 11
29.05.2020, 13:47
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <stack>
#include <queue>
 
using namespace std;
 
stack<int> s;
queue<int> op;
 
int main() {
    int n;
    cin >> n;
 
    int num = 1;
    for (int i = 0; i < n; i++) {
        int val;
        cin >> val;
        if (!s.empty() && val > s.top()) {
            cout << 0 << endl;
            return 0;
        }
        op.push(1);
        s.push(val);
        while (!s.empty() && s.top() == num) {
            op.push(2);
            s.pop();
            num++;
        }
    }
 
    int val = op.front();
    op.pop();
    int count = 1;
    while (!op.empty()) {
        if (op.front() == val) {
            count++;
        }
        else {
            cout << val << " " << count << endl;
            val = op.front();
            count = 1;
        }
        op.pop();
    }
    cout << val << " " << count << endl;
 
    return 0;
}

Решение похожей задачи на C++
2
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
29.05.2020, 13:47
Больше двух лет прошло, на что ты надеешься?
0
3 / 3 / 0
Регистрация: 29.05.2020
Сообщений: 11
29.05.2020, 13:50
Может кому пригодится
1
 Аватар для Semen-Semenich
5222 / 3469 / 1173
Регистрация: 21.03.2016
Сообщений: 8,295
29.05.2020, 17:18
Цитата Сообщение от TensaZangetsu Посмотреть сообщение
Может кому пригодится
мне бы пригодилось но на питоне а в с++ я и сам найду
0
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
29.05.2020, 17:43
обычный стек, что тут такого...
вроде недавно была такая задача, если я не ошибаюсь.
0
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 40
20.06.2020, 14:22
Помогите, пожалуйста, найти программу к этой задаче на питон.

Добавлено через 4 минуты
Ваша программа отлично работает! Спасибо! А на питоне можете помочь? Буду очень благодарна!
0
291 / 193 / 104
Регистрация: 14.11.2017
Сообщений: 489
20.06.2020, 15:07
Вия, работает как и тото код на С++
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
s = []
op = []
n = int(input())
num = 1
for i in range(n):
    val = int(input())
    if len(s) > 0 and val > s[len(s) - 1]:
        print(0)
        quit(0)
    op.append(1)
    s.append(val)
    while len(s) > 0 and s[len(s) - 1] == num:
        op.append(2)
        s.pop()
        num += 1
val = op.pop(0)
count = 1
while len(op) > 0:
    if op[0] == val:
        count += 1
    else:
        print("{0} {1}".format(val, count))
        val = op[0]
        count = 1
    op.pop(0)
print("{0} {1}".format(val, count))
1
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 40
21.06.2020, 00:38
Программа выдаёт ошибку в процессе выполнения..

Добавлено через 31 минуту
zhurban, Программа выдаёт ошибку в процессе выполнения. Вы можете помочь?
0
5 / 4 / 1
Регистрация: 15.03.2019
Сообщений: 4
21.06.2020, 06:20
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
s = []
op = []
n = int(input())
tr = list(map(int, input().split()))
num = 1
for val in tr:
    if len(s) > 0 and val > s[len(s) - 1]:
        print(0)
        quit(0)
    op.append(1)
    s.append(val)
    while len(s) > 0 and s[len(s) - 1] == num:
        op.append(2)
        s.pop()
        num += 1
val = op.pop(0)
count = 1
while len(op) > 0:
    if op[0] == val:
        count += 1
    else:
        print("{0} {1}".format(val, count))
        val = op[0]
        count = 1
    op.pop(0)
print("{0} {1}".format(val, count))
2
11 / 15 / 1
Регистрация: 13.05.2020
Сообщений: 49
30.06.2020, 18:12
примерно тот же код, но без quit()
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
s = []
op = []
n = int(input())
tr = list(map(int, input().split()))
num = 1
p=True
for val in tr:
    if len(s) > 0 and val > s[len(s) - 1]:
        print(0)
        p=False
        break
    op.append(1)
    s.append(val)
    while len(s) > 0 and s[len(s) - 1] == num:
        op.append(2)
        s.pop()
        num += 1
if p:
    val = op.pop(0)
    count = 1
    while len(op) > 0:
        if op[0] == val:
            count += 1
        else:
            print("{0} {1}".format(val, count))
            val = op[0]
            count = 1
        op.pop(0)
    print("{0} {1}".format(val, count))
2
2 / 2 / 0
Регистрация: 28.05.2020
Сообщений: 40
30.06.2020, 22:56
Евгнений[/nick], благодарю Вас!

Добавлено через 1 минуту
Евгнений, благодарю Вас!
0
11 / 15 / 1
Регистрация: 13.05.2020
Сообщений: 49
01.07.2020, 09:24
Вия, всегда пожалуйста
1
4 / 9 / 2
Регистрация: 05.10.2020
Сообщений: 51
01.05.2022, 15:42
Мне и щас помогло...
0
 Аватар для Tim977
40 / 12 / 0
Регистрация: 05.08.2022
Сообщений: 12
15.08.2022, 22:01
TensaZangetsu, Спасибо, хороший код ! Я немного переделал конкретно под заданную задачу

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <stack>
#include <queue>
 
using namespace std;
 
stack<int> s;
queue<int> op;
 
int main() {
    int n;
    cin >> n;
    int num = 1;
    for (int i = 0; i < n; i++) {
        int val;
        cin >> val;
        if (!s.empty() && val > s.top()) {
            cout << "NO";
            return 0;
        }
        op.push(1);
        s.push(val);
        while (!s.empty() && s.top() == num) {
            op.push(2);
            s.pop();
            num++;
        }
    }
    int val = op.front();
    op.pop();
    int count = 1;
    cout << "YES";
    return 0;
}
(Я с Сириуса, Сириус принял, на информатикс не пробовал заливать, но тоже должен принять)
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.08.2022, 22:01
Помогаю со студенческими работами здесь

Сортировка вагонов
К тупику со стороны пути 1 (см. рисунок) подъехал поезд. Разрешается отцепить от поезда один или сразу несколько первых вагонов и завезти...

Сортировка выбором, Сортировка простыми вставками, Сортировка пузырьком, Сортировка слиянием, Быстрая сортировка Хоара
Имеется список товаров, хранящихся на базе. Каждая строка этого списка содержит: инвентарный номер товара; количество видов этого товара;...

Сколько всего вагонов в электричке
Вагоны в электричке пронумерованы натуральными числами, начиная с 1 (при этом иногда вагоны нумеруются от «головы» поезда, а иногда – с...

Создать программу для автоматического считывания номеров вагонов
Добрый день, уважаемые сайберфорумчане. Мне нужна ваша помощь как никогда! Я пишу дипломную работу по теме &quot;Система автоматического...

Сортировка массива каждым из 3 способов (пузырьковая сортировка, сортировка выбором, сортировка вставкой)
1. Напишите программу, которая выполняет следующие функции: • заполнение элементов массива вещественными числами с заданной ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru