Алгоритм перебора точек

Алгоритмы: от сортировки пузырьком до численных методов

Модераторы: C_O_D_E, DeeJayC

Ответить
rewweRrr
Сообщения: 1
Зарегистрирован: 16 мар 2014, 19:29

16 мар 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
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

17 мар 2014, 15:39

Тема перемещена из раздела "С и С++".
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить