Для данной точки N на плоскости в виде пары (x, y) координат нам нужно найти максимальное количество точек, лежащих на одной прямой.
Примеры:
Input : points[] = {-1, 1}, {0, 0}, {1, 1}, {2, 2}, {3, 3}, {3, 4} Output : 4 Then maximum number of point which lie on same line are 4, those point are {0, 0}, {1, 1}, {2, 2}, {3, 3}
Мы можем решить вышеуказанную проблему следующим образом: для каждой точки p рассчитайте ее наклон с другими точками и используйте карту, чтобы записать, сколько точек имеют одинаковый наклон, по которому мы можем узнать, сколько точек находятся на одной линии с p как их один пункт. Для каждой точки продолжайте делать то же самое и обновите максимальное количество найденных баллов.
Некоторые вещи, на которые следует обратить внимание при реализации:
1) если две точки (x1, y1) и (x2, y2), то их наклон будет (y2 — y1) / (x2 — x1), что может быть двойным значением и может вызвать проблемы с точностью. Чтобы избавиться от проблем точности, мы рассматриваем наклон как пару ((y2 — y1), (x2 — x1)) вместо отношения и уменьшаем пару на их gcd перед вставкой в карту. В приведенных ниже кодовых точках, которые являются вертикальными или повторяются, рассматриваются отдельно.
2) Если мы используем unordered_map в c ++ или HashMap в Java для хранения пары склона, то общая сложность решения будет равна O (n ^ 2)
|
Выход:
4
Эта статья предоставлена Уткаршем Триведи . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.
Рекомендуемые посты:
- Подсчитайте количество посещенных точек на числовой линии
- Подсчет тупых углов в окружности с равноудаленными точками 'k' между двумя заданными точками
- Представить заданный набор точек наилучшей из возможных прямых
- Проверьте, лежат ли две точки (x1, y1) и (x2, y2) на одной стороне данной линии или нет
- Найти X и Y пересечения линии, проходящей через заданные точки
- Программа для поиска линии, проходящей через 2 пункта
- Найти точки на заданном расстоянии на линии заданного наклона
- Число упорядоченных точек пары, удовлетворяющих уравнению линии
- Количество горизонтальных или вертикальных отрезков для соединения 3 точек
- Максимальные точки пересечения n линий
- Максимальное количество сегментов, которые могут содержать данные точки
- Максимум точек пересечения n окружностей
- Найти максимально возможное расстояние от источника, используя заданные точки
- Запросы на подсчет очков лежат внутри круга
- Подсчитать интегральные точки внутри треугольника
0.00 (0%) 0 votes