Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Алгоритмы > Создание матрицы вариантов


Автор: FelikZ 21.6.2012, 12:41
Добрый день. Нужен алгоритм для реализации простой программы которая бы генерировала матрицу вариантов из двух входных векторов. Элементы векторов могут быть любыми сущностями, не только числовыми.
Пример:
на входе: 
[a b c d] 
[0 1 2 3]
на выходе:
a b c d
a b c 3
a b 2 3
a 1 2 3
0 1 2 3
0 1 2 d
0 1 c d
0 b c d
0 b c 3
0 b 2 3
0 2 c 3
...
и т.д.
Позиции элементов не должны меняться местами (не должно быть перестановок), а только перебор из элементов заданных в векторах на заданных позициях.
Спасибо! smile

P.S. Вариант с произвольным количеством векторов приветствуется в двойне!

Автор: Akina 21.6.2012, 14:41
Для описанного варианта - берём тупо и организовываем цикл. Переменная цикла - 4 бита (ну т.к. элементов по 4), остальные не используем.
На каждом витке для нулевого бита берём элемент из первого вектора, для единичного бита - из второго.

Добавлено через 47 секунд
Цитата(FelikZ @  21.6.2012,  13:41 Найти цитируемый пост)
Вариант с произвольным количеством векторов 

Соответственно будет не двоичная, а N-ричная маска.

Автор: FelikZ 21.6.2012, 14:58
Спасибо, отличное решение! Правда про N-ричную маску мне стоит почитать smile

Автор: Akina 21.6.2012, 16:37
Цитата(FelikZ @  21.6.2012,  15:58 Найти цитируемый пост)
про N-ричную маску мне стоит почитать  

Про N-ричные числа, вероятно... а заодно и про числа с изменяемой -ричностью разрядов.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)