我有一个包含如下数据的文件
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
因为它们是其他记录的子集而被删除。
最佳答案
提示:最简单的方法是使用 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 次包含测试以删除重复项。请务必检查哪一组较大,以选择应删除哪一组。
这不是最快的方法,但可能是最简单的。
关于c++ - 删除子集交易表格文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2793277/