c++ - 删除子集交易表格文件

标签 c++ c algorithm

我有一个包含如下数据的文件

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/

相关文章:

c++ - 有没有办法替换 C++ 方法中的函数

c++ - (Qt C++)暂时 “disable” 2d map 中的一个键吗?

c++ - 向给定 remote_endpoint 对象和套接字的客户端发送数据包?

c - 当一个线程失败时退出所有线程

algorithm - 机器人导航论文的改进蚁群优化

string - 检查字符串向左或向右旋转 N 处后是否保持不变

c++ - 是否有用于封装线程行为的通用设计模式或面向对象的方法?

c++ - 如何通过继承将模板参数传递给模板子类?

c++ - 在 C 中使用 SSL 的 mongoose 网络服务器的 hello world 示例

c - printf 打印数组的多个元素