1000个人,分两种:好人坏人。里面最少有501个是好人。
如果抽出来两个人,那么好人会说出另外一个人到底是好人还是坏人,而坏人的答案是不确定的。(类似于真话假话)
现在要用一个算法,找出一个一定是好人的人
最简单的方法:
那一个人出来和所有人放一起
如果超过501个人说他是好的,那他一定是好的,否则一定是坏的
这样的方法是可行的,但是复杂度是n方
要求要优化到n
想了半天都没想出来了,请高手支招
问题的关键是:一定要考虑最差情况。
如果抽出来两个人,那么好人会说出另外一个人到底是好人还是坏人,而坏人的答案是不确定的。(类似于真话假话)
现在要用一个算法,找出一个一定是好人的人
最简单的方法:
那一个人出来和所有人放一起
如果超过501个人说他是好的,那他一定是好的,否则一定是坏的
这样的方法是可行的,但是复杂度是n方
要求要优化到n
想了半天都没想出来了,请高手支招
问题的关键是:一定要考虑最差情况。