|
|
Знаете ли Вы, что ... | |
...инструкция по установке аватара описана в Правилах форума. | |
<< Предыдущий совет - Случайный совет - Следующий совет >> |
Разминка для мозгов Загадки, задачи, головоломки - тренируем мозг |
Ответить |
|
Опции темы | Опции просмотра |
24.07.2014 11:52 | #11 | |
|
Цитата:
Например,
Может поискать другое решение? PS. Уверяю вас, что я в свое время сам решал задачку примерно так и завалил ее. На апелляции Игнатьев (это с ПММ ТашГУ, привет всем, кто у него учился - я у "Тролейбуса" не учился к сожалению) как раз и вбил меня в ступор на том, что моя программа не отслеживала некоторые особые ситуации. Задачку я тогда завалил.
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. Последний раз редактировалось Nadir Zaitov; 24.07.2014 в 11:56. |
|
|
Ответить |
24.07.2014 15:05 | #12 |
Сообщений: 525
+ 445
352/175
– 6
38/27
|
Методом перебора, посредством нахождения самого максимального угла векторов.
1) Находим самую левую точку, которая будет одной из вершин многоугольника. Обозначим эту точку как B1 2) СТроим перпендикуляр из точки B1(или можно отрезок координаты второй точки которого будет, к примеру, А(Xi; Yi+10)), строим лучи из точки B1 ко всем другим оставшимся точкам. Вычисляем углы между перпендикуляром и лучами по формуле 3) Находим максимальный угол. Точка которого будет является следующей вершиной выпуклого многоугольника. Обозначаем как B2 {Возможно что точка будет лежать на одной из сторон многоугольника} 3.1) Проверяем если кол-во макс. углов 2 и более, то выбираем ту точку которая максимально удаленна от B1. Т.е. находим максимальную длину отрезков B1,B2. 4) Строим лучи из точки B2, находим максимальный угол между лучом образованным точками B1, B2 и оставшимися лучами. Обозначаем точку как B3 4.1) Проверяем если кол-во макс. углов 2 и более, то выбираем ту точку которая максимально удаленна от B2. Т.е. находим максимальную длину отрезков B2,B3. 5) Повторяем цикл со следующим лучом образованным точками B2, B3 6) И т.д пока не придем к точке B1 |
|
Ответить |
24.07.2014 16:08 | #13 | |
|
Цитата:
искомый многоугольник является границей выпуклой оболочки заданных точек. т.е. множество линейных комбинаций с коэффициентами, сумма которых равна 1 Есть следующий алгоритм. Шаг 1. Находится точка с наименьшей абсциссой (самая левая точка). Шаг 2. Объявляем эту точку текущей Шаг 3. Находится самая правая относительно текущей точки Шаг 4. Объявляем теперь ее текущей и т.д. Условие завершения: текущей вновь окажется начальная точка. |
|
|
Ответить |
27.07.2014 18:25 | #14 | |
|
Цитата:
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. |
|
|
Ответить |
Реклама и уведомления | |
27.07.2014 18:29 | #15 |
|
1) Это не дает угол.
2) Что такое "максимальный угол"? 3) А если 2 точки "совпали" - имеют одинаковые координаты, то там какой угол? Попробуйте написать программку (если вы программист), чтобы понять что там не все так просто.
__________________
Тот факт, что медуза выжила 650 миллионов лет без мозгов, даёт надежду многим. Последний раз редактировалось Nadir Zaitov; 27.07.2014 в 18:32. |
|
Ответить |
27.07.2014 21:51 | #16 |
AKA:Invincible!
Сообщений: 14
+ 4
2/2
– 0
1/1
|
Я просто оставлю это здесь
http://e-maxx.ru/algo/convex_hull_graham
__________________
https://img.uforum.uz/images/lmngfum5556454.jpg |
|
Ответить |
"–" от:
|
31.07.2014 10:54 | #18 | |
Сообщений: 525
+ 445
352/175
– 6
38/27
|
Цитата:
Пример. Имеется множество точек. Находим самую крайнюю левую. И строим перпендикуляр Из точки В1 строим лучи ко всем остальным точкам. Угол кот образован точками A, B1, B2 будет максимальным (ну или cosa, которого минимален). Из точки В2 строим лучи ко всем остальным точкам. И находим макс угол. И т.д. |
|
|
Ответить |
"+" от:
|
31.07.2014 11:56 | #20 |
Сообщений: 10,921
+ 3,666
10,931/4,676
– 584
286/214
|
Давайте все-таки попробуем.
1) Определяем самую левую из точек. Если таких несколько, то определяем самую нижнюю из них. Берем ее за вершину В1. 2) Измеряем угол между вертикальным лучом, проведенным из вершины В1 вверх, и каждой из оставшихся точек. Определяем точку с самым большим углом. Если таких точек несколько, то берем ту из них, что максимально удалена от вершины В1. Обозначим ее за вершину В2. 3) Соединяем вершину 2 со всеми остальными точками и измеряем угол между отрезком В1_В2 и получившимся отрезком В1_ТХ. Определяем точку с самым большим углом В1_В2_ТХ, если таких точек несколько, то берем самую удаленную от В2. Определяем ее за вершину В3. 4) Проводим операцию, описанную в п. 3) для каждой новой и предыдущей перед ней вершиной до тех пор, пока найденная новая вершина не совпадет с В1. |
|
Ответить |
|