Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2013, 08:54   #11
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Вадим Мошев, координаты тоже одномерные и они нужны, так как гвозди можно вбивать через разное расстояние друг от друга.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.10.2013, 09:11   #12
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Вадим Мошев, координаты тоже одномерные и они нужны, так как гвозди можно вбивать через разное расстояние друг от друга.
я бы сказал, что гвозди ОБЯЗАТЕЛЬНО вбиты на разном расстоянии друг от друга, иначе задача вырождается в элементарнейшую (о чём, собственно, нам Вадим Мошев и написал )
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.10.2013, 21:04   #13
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
я бы сказал, что гвозди ОБЯЗАТЕЛЬНО вбиты на разном расстоянии друг от друга, иначе задача вырождается в элементарнейшую
Может, я что-то не понимаю, но прошу объяснить мне, что это меняет?
Ведь решение то же, что и я написал ранее?

Предположим, что у нас три гвоздя. Расстояние между первым и вторым равно 1 километру. Между вторым и третьим составляет 1000 километров. Соединяем первый гвоздь ниткой со вторым. Второй связываем с третьим. Несмотря на то, что общая протяжённость нитки громадная, она является минимальной из возможных. Я прав?

Та как вам моё вариант решения поставленной задачи?
То есть, нам просто надо просуммировать получившиеся расстояния для получения выходного результата, хотя в коде этого я не наблюдал. Может, я чего-то не понимаю?

ЗЫ. Конечно, если гвозди расположены на одном и том расстоянии друг от друга, то можно не суммировать расстояния, а вообще умножить количество соединённых пар на расстояние между гвоздями.

Последний раз редактировалось Вадим Мошев; 16.10.2013 в 21:06.
Вадим Мошев вне форума Ответить с цитированием
Старый 16.10.2013, 21:12   #14
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Хорошо, а такой пример:
* 4 * 1 * 2 * 3 *
(* - гвоздь)
Соединили по-Вашему:
* 4 * 1 * 2 * 3 * = 4 + 2 + 3
Минимум:
* 4 * 1 * 2 * 3 * = 4 + 1 + 3
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 16.10.2013, 23:32   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Вадим Мошев
Предположим, что у нас три гвоздя.
бессмыслено. Вы ещё два гвоздя рассмотрите.
Три гвоздя связываются друг с другом при любом расстоянии по условиям задачи.

Вот, посмотрите пример BDA, он наглядно показал, в чём Вы ошибаетесь.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.10.2013, 13:19   #16
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Хорошо, а такой пример:
* 4 * 1 * 2 * 3 *
(* - гвоздь)
Соединили по-Вашему:
* 4 * 1 * 2 * 3 * = 4 + 2 + 3
Минимум:
* 4 * 1 * 2 * 3 * = 4 + 1 + 3
Я пока что не могу понять, какой гвоздь с каким соединяется в вашем примере. Единственное, что я понял - это то, что цифры обозначают расстояния между гвоздями
Вадим Мошев вне форума Ответить с цитированием
Старый 17.10.2013, 13:30   #17
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Ребята, вы о чём? Задача легко решается методом Коммивояжёра.
Находим минимальную длину общего пути, затем удаляем пути через один, начиная с самого длинного. Получаем пары с самыми короткими путями.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 17.10.2013, 13:33   #18
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Красным выделены соединения.
В Вашем случае 1 и 2, 3 и 4, 4 и 5.
Минимум - 1 и 2, 2 и 3, 4 и 5.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста решить задачу. isyakin Помощь студентам 0 28.09.2013 20:10
Помогите, пожалуйста, решить задачу medved_d Общие вопросы C/C++ 0 28.09.2013 12:16
Помогите решить задачу, пожалуйста! Elizaveta Паскаль, Turbo Pascal, PascalABC.NET 1 10.11.2008 02:29