在USACO programming problem工作时,我在使用蛮力方法时陷入困境。
从N个元素的列表中,我需要计算所有不同的配对。
我的问题是双重的。
在我放弃解析分析之后,我只采用了蛮力的方法。虽然这是特定于上下文的,但我注意到人们可以快速排除只有一个所谓的“虫洞”的行 - 它无法有效地处于无限循环中。
更新
我会用树形结构来表达它们。设定N = 6; {A,B,C,d,E,F}。 通过按时间顺序构建以下树,列出了所有组合。
A - > B,C,d,E,F;
B - > C,d,E,F;
C - > d,E,F;
D - > E,F;
E - > F。
检查:总共有6个超过2 = 6!/(2!* 4!)= 15个组合。
注意。选择较低节点后,应将其作为顶级节点丢弃;它只能存在于一对中。
接下来,选择它们并循环遍历所有配置。
答案 0 :(得分:1)
以下是一个示例代码(在C / C ++中):
git