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

Написать алгоритм

17.05.2021, 16:03. Показов 2198. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На плоскости задано множество из n точек и прямая ax+by+c=0. Найдите максимальное расстояние между точками, лежащими по разные стороны от прямой.
Не могу понять как решается задача, из-за чего не могу написать алгоритм.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.05.2021, 16:03
Ответы с готовыми решениями:

Написать алгоритм
Помогите, пожалуйста, написать подробный алгоритм к коду: import math c=0.72 strBin = "" while (strBin.__len__()<32): ...

Написать алгоритм и программу проверки прямоугольников на равенство
Стороны одного прямоугольника равны А и В. Стороны другого равны Х и Y. Написать алгоритм и программу проверки прямоугольников на...

Разработать алгоритм и написать код для решения
Компьютер загадывает число от 1 до n. У пользователя k попыток отгадать. После каждой неудачной попытки компьютер сообщает меньше или...

5
Status 418
Эксперт Python
4584 / 2350 / 601
Регистрация: 26.11.2017
Сообщений: 5,262
Записей в блоге: 3
17.05.2021, 16:15
два цикла. обычный перебор за O(n^2).
нужно быстрее "разделяй и властвуй".
1
Эксперт Python
8848 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,315
17.05.2021, 17:31
Лучший ответ Сообщение было отмечено YaKr как решение

Решение

YaKr, через numpy вроде так
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
30
31
32
import numpy as np
 
# x и y - двумерные массивы абсцисс и ординат точек 
# соответственно ( [[1,-3,4,5...]])
xy = np.random.randint(-9, 9, (10,2)) 
#print(xy)
x, y = np.atleast_2d(xy[:,0], xy[:,1]) 
 
# расстояния между любыми двумя точками
dist = np.sqrt( (x-x.T)**2 + (y-y.T)**2) 
#print(dist)
 
# задание любых двух точек на прямой
a, b, c = 1,1,1 #map(float, input().split())
if a != 0:
    x1 = -c/a 
    y1 = 0
    y2 = 10
    x2 = -(c + b*y2)/a
else:
    x1 = 0
    x2 = 10
    y1 = y2 = - c/b 
 
# определение положения точек относительно
# прямой (через формулу площади треугольника)
spoint = np.sign((x2-x1) * (y-y1) - (y2-y1) * (x-x1))
 
# spoint*spoint.T - если < 0, значит точки i и j по разные
# стороны прямой
res = dist*(spoint*spoint.T)
print(-res.flat[np.argmin(res)])
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
17.05.2021, 18:17
Я бы сначала построил выпуклую оболочку convex hull, а дальше искал расстояние только между этими точками... Не знаю насколько это было бы оптимально..
0
Эксперт Python
8848 / 4500 / 1864
Регистрация: 27.03.2020
Сообщений: 7,315
17.05.2021, 18:44
u235, тоже можно
Но "выигрыш" в чем?
0
5515 / 2868 / 571
Регистрация: 07.11.2019
Сообщений: 4,758
17.05.2021, 19:28
Для convex hull есть быстрые алгоритмы, точек в оболочке сильно меньше чем общее число точек. Впрочем, тут у нас eaa специалист по сложностям и алгоритмам, думаю он более квалифицировано обяснит прав ли я или ошибаюсь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.05.2021, 19:28
Помогаю со студенческими работами здесь

Написать алгоритм и программу для нахождения количества всех месторождений железной руды
Доброго времени суток. Очень нужна помощь. Дана карта Свердловской области: Написать алгоритм и программу для нахождения количества...

Не могу написать бинарный алгоритм
Не работает бинарный алгоритм,как можно сделать так чтобы он заработал? def binary_search(lists, item): low = 0 high =...

Используя алгоритм, написать программу

Написать алгоритм, строящий список из двух заданных списков а и b следующим образом
Написать алгоритм, строящий список из двух заданных списков а и b следующим образом: , b, а, b, ...]. Например, для списков а = и b = ...

Написать алгоритм, строящий список из двух заданных списков а и b следующим образом
Задача 1.Написать алгоритм, строящий список из двух заданных списков а и b следующим образом: , b, а, b, ...]. Например, для списков а = и...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Изучаю 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% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru