Модераторы: Alx, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм сортировки вагонов, не могу придумать алгоритм 
:(
    Опции темы
toshun
Дата 18.12.2007, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



Помогите разработать алгоритм для сортировки вагонов.


И надо отсортировать вагоны, склеивая их минимальное количество раз. Количество вагонов первоначально известно.

Это сообщение отредактировал(а) toshun - 18.12.2007, 16:28
PM MAIL   Вверх
Akina
Дата 18.12.2007, 09:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Для начала. Если вагоны с номерами Х и Х+1 стоят друг за другом - их всегда следует отправлять на один и тот же путь, вместе. При этом их можно считать одним вагоном.

Следовательно первичный, неоптимизированный, алгоритм, состоит в том, чтобы для каждой пары (возможно, уже составных, т.е. состоящих из нескольких отсортированных) вагонов с номерами Х и Х+1, которые НЕ стоят друг за другом:

1) Если вагон Х стоит в составе раньше - отправить их на один путь.
2) Если нет - отправить вагон Х+1 на другой путь.
3) Склеить составы, начиная с состава, в котором находится вагон 1.

Скажем для «1 3 5 2 4 6 7» это выглядит как? 

Первая перетасовка.
вагон 1 на путь 1
пара 1-2 норм., вагон 2 на путь 1
пара 2-3 ненорм., вагон 3 на путь 2
пара 3-4 норм., вагон 4 на путь 2
пара 4-5 ненорм., вагон 5 на путь 1
пара 5-6 норм., вагон 6 на путь 1
пара 6-7 норм., вагон 7 на путь 1
результат:
путь 1: 15267
путь 2: 34
состав: 1526734

Вторая перетасовка:
вагон 1 на путь 1
пара 1-2 норм., вагон 2 на путь 1
пара 2-3 норм., вагон 3 на путь 1
пара 3-4 норм., вагон 4 на путь 1
пара 4-5 ненорм., вагон 5 на путь 2
пара 5-6 норм., вагон 6 на путь 2
пара 6-7 норм., вагон 7 на путь 2
результат:
путь 1: 1234
путь 2: 567
состав: 1234567

Сортировка завершена.



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
toshun
Дата 18.12.2007, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



Спасибо большое!
А можно ли узначть число минимальных склеиваний до самих склеиваний?
PM MAIL   Вверх
Akina
Дата 18.12.2007, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Цитата(toshun @  18.12.2007,  14:45 Найти цитируемый пост)
А можно ли узначть число минимальных склеиваний до самих склеиваний? 

Можно. Узнавай.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pakshin A. S.
Дата 18.12.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61




 ! 
Pakshin A. S.
toshun, кнопка "Сообщить модератору" не предназначена для какого-либо общения с кем-либо - для этого существуют "Личные сообщения"...

PM   Вверх
toshun
Дата 22.12.2007, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



А каким способом?
А то мне сначала надо вывести на экран минималное количество склеиваний, а после уже сами склеивания.
И мне приходится один цикл два раза выполнять, один раз для поиска минимального числа склеивания, а второй уже для вывода самих склеиваний.
Пробовал с помощью двумерного массива заносить склеивания, но у меня переполнение памяти происходит.
PM MAIL   Вверх
Akina
Дата 23.12.2007, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Цитата(toshun @  22.12.2007,  01:34 Найти цитируемый пост)
мне приходится один цикл два раза выполнять, один раз для поиска минимального числа склеивания, а второй уже для вывода самих склеиваний.

А запомнить типа не судьба... или религия не позволяет?

Цитата(toshun @  22.12.2007,  01:34 Найти цитируемый пост)
Пробовал с помощью двумерного массива заносить склеивания, но у меня переполнение памяти происходит. 

Кривой код. Учитесь программировать без ошибок.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
toshun
Дата 25.12.2007, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 10.2.2006

Репутация: нет
Всего: нет



а как вы предлагаете запоминать?
там размер меньше или равен  10000. если брать такой двумерный, то стэка не хватит
PM MAIL   Вверх
Akina
Дата 25.12.2007, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 2
Всего: 454



Цитата(toshun @  25.12.2007,  03:33 Найти цитируемый пост)
если брать такой двумерный, то стэка не хватит 

Какое отношение это имеет к стеку??? я работал с массивами, которые в принципе не ложатся в физическую память - и ничего, прожевывало, на то виртуальная память со свопом и придуманы... рекурсивно пишете, что ли? если да - то нафига? а вообще просто не надо передавать массивы как параметры функции, используйте глобальный динамический массив.
В крайнем случае пишите решение во внешний файл.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема »


 




[ Время генерации скрипта: 0.1123 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.