我有一个简单的两个2D数组(表示为map),填充为1和0.
| A | B | C | D | sum
--------------------------
A | 0 | 1 | 1 | 1 | 3
B | 1 | 0 | 0 | 0 | 1
C | 1 | 0 | 0 | 1 | 2
D | 1 | 0 | 1 | 0 | 1
它是graph的表示,因此该表与主对角线对称(没有成员与自身/没有递归/)。 我需要生成指定列/行的排列。 我知道有一个next_permutation()函数,但我不知道如何使用它(对于表示图的二维数组),我想我需要编写自己的算法,只返回2列/行的索引进行切换。我无法意识到,我会因为切换2个cols / rows而重写整个表。
最难的是,切换所有行/列并不是必要的,当有行时,它们具有唯一的总和 - 这个cols / rows(在我的例子中为A)可以留在他们的位置,因为它很清楚他们所属的第二个表中的哪个成员(=没有更多成员具有相同数量的关系)。
在我能够生成A-D(它的表)的排列之后,我可以将生成的表与第二个进行比较并检查,是否相同(这就是我已经完成的)。
我该如何进行排列?
答案 0 :(得分:0)
只有64种双向图变体,就像你用4个顶点描述的那样。换句话说,您的图表包含6位信息,因此很容易从数字0到63构建。