第一直接想法就是通过union find合并所有相同类。但事实上,给定了总数,通过对每一个不同类的筛减就可以直接得到有多少类。例如有总共有5个物品,a,b,c,d,e. 通过判断 b,c,d,e和a是否一个类别如果是则至多有4个种类(5-1)并移交判断权给下一个物品. 如果不是则什么也无法判断。 更具体的: 例如 a: 1, b: 2, c: 1, d: 3, e:2 i = 0 时 我们得知, 1: a, c i = 1 时 我们得知, 1: a, c; 2: b, e i = 2 时 我们得知, 1: a, c; 2: b, e; 3: d