这道用到了并查集的算法,但很难直接地看出来准确的解法,需要不断的思考和挑战固有的思考方式才能找到冲突口。
1.把scissors,rock,cloth分为三个集合,每一个回合都是把未分组的child分到某一个组里去,如果把一个已经分到scissors的child分到其它组,那此次操作就是非法的。
2.枚举法,怎么确定哪一个child是gesture,因为N最大值为500,所以可以枚举每一种可能。比如假设i为gesture,因为gesture的任何结果都是可能的,所以所有i参与的回合都可以忽略,不进行分组操作。
3.换个角度思考问题,这个最难。怎么确定最少要几个回合才能找出gesture,可以假设有这样一种情况,第i个回合的时候有3个children都有可能是gesture,第i+1个回合可以排除掉一个child,第i+2个回合又可以排除掉一个,那么结果是不是可以出来了,就是最少需要i+2个回合才能找出gesture。