0

セットのリストが与えられた...

var sets = new List<HashSet<int>>(numTags);

別の適切なサブセットであるすべてのセットを削除するにはどうすればよいですか?

これはそれを行うための最良の方法ですか?

for (int i = 0; i < sets.Count; ++i)
{
    for (int j = 0; j < sets.Count; ++j)
    {
        if (i != j && sets[i].IsProperSubsetOf(sets[j]))
        {
            sets.RemoveAt(i--);
        }
    }
}

取り外した後、すべてが1つ下に移動すると想定しているため、デクリメントiしているので、そのスロットをもう一度確認する必要があります。

4

1 に答える 1

3
var toRemove = sets.Where(s => sets.Any(superset => s.IsProperSubsetOf(superset))).ToList();

foreach (var s in toRemove)
    sets.Remove(s);

チェックする必要はありませs != supersetん。セットがそれ自体の適切なサブセットではないためです。 http://en.wikipedia.org/wiki/Proper_subset#proper_subset

于 2010-10-09T08:13:41.177 に答える