2013-12-16 3 views
0

У меня есть матрица m-columns n-raws и вы хотите найти все комбинации. Например:Найти все комбинации по столбцам

2 5 6 9 
5 2 8 3 
1 1 9 4 
2 5 3 9 

моя программа напечатает

2-5-6-9 
2-5-6-3 
2-5-6-4 
2-5-6-9 
2-5-8-9 
2-5-8-3... 

Не удается определить м х for петель. Как это сделать?

ответ

0

Используйте рекурсию. Достаточно указать для каждой позиции, какие значения могут быть там (столбцы), и сделать рекурсию, которая имеет в качестве параметров список чисел для пройденных позиций. В рекурсии итерации производится итерация через возможности следующей позиции. Реализация

Python:

def C(choose_numbers, possibilities): 
    if len(choose_numbers) >= len(possibilities): 
    print '-'.join(map(str, choose_numbers)) # format output 
    else: 
    for i in possibilities[len(choose_numbers)]: 
     C(choose_numbers+[i], possibilities) 

c = [[2, 5, 1, 2], [5, 2, 1, 5], [6, 8, 9, 3], [9, 3, 4, 9]] 
C([], c) 
Смежные вопросы