相关疑难解决方法(0)

给定一个数字列表,找到所有矩阵,使得每列和每行的总和为 264

假设我有一个包含 16 个数字的列表。有了这 16 个数字,我可以创建不同的 4x4 矩阵。我想找到所有 4x4 矩阵,其中列表中的每个元素都使用一次,并且每行和每列的总和等于 264。

首先,我找到列表中元素的所有组合,总和为 264

numbers = [11, 16, 18, 19, 61, 66, 68, 69, 81, 86, 88, 89, 91, 96, 98, 99]

candidates = []
result = [x for x in itertools.combinations(numbers, 4) if sum(x) == 264]
Run Code Online (Sandbox Code Playgroud)

result成为一个列表,其中每个元素都是一个包含 4 个元素的列表,其中 4 个元素的总和 = 264。我认为这些是我的行。然后我想对我的行进行所有排列,因为加法是可交换的。

for i in range(0, len(result)):
    candidates.append(list(itertools.permutations(result[i])))
Run Code Online (Sandbox Code Playgroud)

现在给出总和为 264 的所有可能行。我想选择 4 行的所有组合,以便每列的总和为 264。

test = []
for i in range(0, len(candidates)):
    test = test + candidates[i]
result2 = …
Run Code Online (Sandbox Code Playgroud)

python matrix combinatorics constraint-programming python-3.x

7
推荐指数
1
解决办法
819
查看次数