Главная страница
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
2-1444423211
Михапыч
2015-10-09 23:40
2017.07.09
Ошибка компиляции


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


6-1283427469
dmitrynpk
2010-09-02 15:37
2017.07.09
Ограничение доступа к Серверу на TIdTCPServer


4-1281966850
istok
2010-08-16 17:54
2017.07.09
узнать, находится ли фокус ввода в окне или нет...


2-1445006653
AndrG
2015-10-16 17:44
2017.07.09
constant expression violates subrange bounds