Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2017.07.09;
Скачать: CL | DM;

Вниз

Задача по программированию   Найти похожие ветки 

 
shkolnik   (2015-10-17 01:35) [0]

Я не прошу написать задачу, прошу подсказать алгоритм.
Есть N координат точек на плоскости.
Необходимо найти кол. квадратов, которые образуют точки.

Планирую делать так:

1. функция, принимает 4 координаты и проверяет образуют они квадрат или нет.
планирую проверять по парам по общему X и между ними пары должны иметь общую по Y. так же можно вероятно проверять расстояния между точками что бы было равно ну и угол 90 градусов или равные диагонали.

2. нужно выбирать из общего кол. координат по 4 варианта и передавать в функцию поиска квадрата между ними.
как понимаю кол. вариантов это n!\4! * (n-4)!

вот тут и проблема с алгоритмом, - как-то в голове не складывается вариант перебора массива элементов по всем возможным комбинациям по 4.

может подскажите? ну или может какие мысли будут другие для решения этой задачи.

спасибо.


 
ВладОшин ©   (2015-10-17 11:47) [1]

p = record x,y integer end
N array of p
for i1 1 - N
for i2 1 - N
for i3 1 - N
for i4 1 - N
Check(N[i1],N[i2],N[i3],N[i4],)

можно перед  Check проверять были ли эти точки уже проверены, если они в другом порядке уже приходили


 
shkolnik   (2015-10-17 15:52) [2]

спасибо ВладОшин, но тут полный перебор идет.
>> можно перед  Check проверять были ли эти точки уже проверены
дополнительно массив заводить на проверенные комбинации - как-то оно не красиво.

думаю завести 4 указателя на массив координат.

главный цикл перебираем первый указатель с 1 до n - 3
 второй цикл перебирает указатель с 2 до n-2
   третий цикл перебирает указатель с 3 до n-1
     четвертый цикл перебирает указатель с 4 до n
       в котором и вызывается проверка 4 координат по указателям этим на массив

думаю тут как раз будет одноразовая проверка.



Страницы: 1 вся ветка

Текущий архив: 2017.07.09;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.004 c
4-1281966850
istok
2010-08-16 17:54
2017.07.09
узнать, находится ли фокус ввода в окне или нет...


6-1283385235
Gu
2010-09-02 03:53
2017.07.09
Определение региона по ip


2-1444440112
Е95
2015-10-10 04:21
2017.07.09
Как можно экспортировать функцию по EntryPoint (ordinal)?


2-1445034926
shkolnik
2015-10-17 01:35
2017.07.09
Задача по программированию


4-1282815533
RG
2010-08-26 13:38
2017.07.09
в Windows7 не работает IsWindowVisible