![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
dima2308 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 5.12.2014 Репутация: нет Всего: нет |
Имеется N городов, каждый из которых имеет целые координаты. Расстояние между двумя городами определяется как |x1-x2|+|y1-y2|.
Требуется построить n+1 город и сделать его столицей (координаты должны быть целыми). Место для столицы выбирается так, чтобы среднее арифметическое расстояний между столицей и остальными городами было наименьшим и столица не должна стоять на уже построенном городе. На вход подается N - количество городов (1<=N<=100); пары целых чисел, не превышающих 1000 по абсолютной величине - координаты городов. На выходе два целых числа X и Y - координаты столицы. Пример: Входные данные 4 0 0 1 1 0 1 1 0 На выходе имеем 0 2 Не могу составить алгоритм решения. Буду рад любой помощи. Это сообщение отредактировал(а) dima2308 - 14.12.2016, 21:10 |
|||
|
||||
Olej |
|
||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 30.11.2016 Репутация: нет Всего: нет |
Это очень дурной, вырожденный пример для начала решения такой задачи: найденное решение 0 2 здесь является как-раз наихудшим возможным. А взять для начального тестирования любой задачи неадекватный тест - это заведомо загубить затею. Как говорит английская поговорка:
P.S. Хотя задача, сама по себе, интересная. |
||||
|
|||||
Olej |
|
||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 30.11.2016 Репутация: нет Всего: нет |
1. Ищем размеры поля: Xmax = max( x1, x2, ...) + 1 Xmin = min( x1, x2, ...) - 1 Ymax = max( y1, y2, ...) + 1 Ymin = min( y1, y2, ...) - 1 Для всех (Xmin ... Xmax) * (Ymin ... Ymax) точек поля просчитываем сумму расстояний D и фиксируем минимум этой величины D. 2. Ищем начальную позицию внутри поля: X = sum( xi, i=1, n ) / n Y = sum( yi, i=1, n ) / n Из 4-х целочисленных позиций, окружающих вещественную позицию (X,Y) выбираем ближайшую. Итерационно, в цикле, рассчитываем расстояния до каждой Di точки ... и сдвигаем позицию (X, Y) в направлении той точки, расстояние до которой минимально. 3. Используя любую известную реализацию оптимизационного алгоритма с ограничениями (X>0, Y>0) ищем вещественный минимум функции 2-х переменных (X,Y). Из 4-х целочисленных соседей (X,Y) перебираем наилучший. (хотя это решение: "из пушки по воробьям") P.S. Кстати, из-за того, что положение начала координат (0,0) чисто условно, можно допустить и отрицательные координаты, а оптимизационные задачи без ограничений всегда решаются на порядок проще. Добавлено через 1 минуту и 25 секунд
Язык? |
||||
|
|||||
Olej |
|
||||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 30.11.2016 Репутация: нет Всего: нет |
capital1.cc :
Добавлено @ 00:42
Добавлено через 5 минут и 44 секунды
Это сообщение отредактировал(а) Olej - 23.12.2016, 00:44 |
||||||||||||||||
|
|||||||||||||||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |