2010-05-08 6 views
1

J'ai un fichier contenant des données comme suitsuppression des opérations de sous-ensemble forment fichier

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 

Je veux retirer de ce fichier toutes les transactions de sous-ensemble.

fichier de sortie doit être comme suit

10 20 30 40 70 
29 70 
80 90 20 30 40 
40 45 65 10 20 80 

Lorsque les dossiers comme

20 30 70 
30 40 10 20 
45 65 20 

sont supprimés en raison de leur sous-ensemble d'autres dossiers.

Répondre

2

Astuce: façon la plus simple est d'utiliser 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()); 

Vous pouvez créer un ensemble de jeux, puis faire une n^2 quantité d'inclure des tests pour éliminer les doublons. Assurez-vous de vérifier quel jeu est plus grand, pour choisir lequel devrait être retiré.

Ce n'est pas le le plus rapide façon de le faire, mais probablement le plus facile.