1.使用algorithm中的next_permutation函数
本题主要是使用位与运算,同时需要组合和枚举;先枚举每一种k类疾病的组合,对此组合然后与每一头牛进行或运算,若在已有的集合中不会增添新的疾病,则数量加一,以此类推,求出最大的即为结果
对于位运算,最低位为1,次位为2,...,第i低位为2^(i-1),若第i位表示的疾病在集合中,则将集合表示成的数加上2^(i-1);如此则可以生成一个数代表整个集合。
须注意,next_permutation(first,last)生成的是由小到大的集合
2.生成由大到小的集合,与id codes相反