按列查找所有组合

时间:2013-12-16 11:29:58

标签: combinatorics

我有n行m列矩阵,想要找到所有组合。例如:

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...

无法定义m x for个循环。怎么做?

1 个答案:

答案 0 :(得分: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)