-1

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

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

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

4

1 回答 1

1

算法可能是这样的:

sets = list()
f = open("data.txt")

for line in f:
    currentSet = set()
    for item in line.split():
        currentSet.add(int(item))
    printIt = True
    for s in sets:
        if currentSet.issubset(s):
            printIt = False
            break
    if printIt:
        print line,
        sets.append(currentSet)

顺便说一句,这也是一个 Python 程序 :) 另外我相信可以制作出效率更高的算法。

您的下一步:将其重写为 C/C++。祝你好运 :)

于 2010-04-28T10:52:20.573 回答