PDA

Просмотр полной версии : Алгоритм перебора точек



rewweRrr
16.03.2014, 20:18
Есть точки:
(0,1) (0,2) ... (0,n)
(1,1) ... (1,m)
...
(L,1) (L,1) ... (L, k)
координата Y может принимать значения от 1 до n, m, ... k соответственно. А координата Х меняется от 0 до L. Мне нужно перебрать всевозможные комбинации точек (без повторений) длинной 3, 4, 5... Х так, чтобы в 1ой комбинации не повторялись точки с одинаковой координатой X.

Пример:
Даны точки:
(0,1) (0,2)
(1,1)
(2,1) (2,2) (2,3)
(3,1)

Возможные последовательности:
Из 3х точек: (0,1)(1,1)(2,1)____Из 4х точек (0,1)(1,1)(2,1)(3,1)
___________(0,1)(1,1)(2,2)_______________(0,1)(1,1 )(2,2)(3,1)
___________(0,1)(1,1)(2,3)_______________(0,1)(1,1 )(2,3)(3,1)
___________(0,1)(1,1)(3,1)_______________(0,2)(1,1 )(2,1)(3,1)
___________(0,2)(1,1)(2,1)_______________(0,2)(1,1 )(2,2)(3,1)
___________(0,2)(1,1)(2,2)_______________(0,2)(1,1 )(2,3)(3,1)
___________(0,2)(1,1)(2,3)
___________(0,2)(1,1)(3,1)
___________(1,1)(2,1)(3,1)
___________(1,1)(2,2)(3,1)
___________(1,1)(2,3)(3,1)

Хочется получить хороший алгоритм. Я понимаю, что можно перебирать всевозможные комбинации по X потом, зная количество точек циклами пробегать по Y. Но эт долго и не клево =(
Есть какие-нибудь идеи?

Romeo
17.03.2014, 15:39
Тема перемещена из раздела "С и С++".