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