我有一个包含以下数据的文件
10 20 30 40 70
20 30 70
30 40 10 20
29 70
80 90 20 30 40
40 45 65 10 20 80
45 65 20
我想从此文件中删除所有子集事务。
输出文件应如下所示
10 20 30 40 70
29 70
80 90 20 30 40
40 45 65 10 20 80
记录如
20 30 70
30 40 10 20
45 65 20
被删除,因为它们是其他记录的子集。
答案 0 :(得分:2)
提示:最简单的方法是使用std::set
#include <set>
#include <algorithm>
...
std::set< int > s1, s2;
...
// Is s1 a subset of s2?
bool test = std::includes(s2.begin(),s2.end(),s1.begin(),s1.end());
您可以创建一组集合,然后执行n ^ 2个包含测试以删除重复项。务必检查哪个更大,选择哪一个应该被删除。
这不是最快方式,但可能最简单。