【问题标题】:removing subset transactions form file删除子集交易表单文件
【发布时间】:2010-05-08 07:32:04
【问题描述】:

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

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 

因为它们是其他记录的子集而被删除。

【问题讨论】:

    标签: c++ c algorithm


    【解决方案1】:

    提示:最简单的方法是使用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 次包含测试以删除重复项。请务必检查哪一组较大,然后选择应该删除哪一组。

    这不是最快的方法,但可能是最简单的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 2014-03-11
      • 1970-01-01
      • 1970-01-01
      • 2020-10-24
      • 2016-07-02
      • 2014-11-19
      相关资源
      最近更新 更多