明星问题
题目:有n个人,其中一个明星和n-1个群众,群众都认识明星,明星不认识任何群众,群众两两间可能认识也可能不认识,每次问一个人是否认识另外一个人的代价为0(1),试设计一种算法找出明星,并给出时间复杂度。
答案:群众都认识明星,明星不认识任何群众。设其中任意2个人A,B,询问A是否认识B。若是,则A不是明星,排除之,否则B不是明星。每次询问都可以排除一人,因此最多询问n-1次,时间复杂度O(n)。
一切源于对计算机的热爱
题目:有n个人,其中一个明星和n-1个群众,群众都认识明星,明星不认识任何群众,群众两两间可能认识也可能不认识,每次问一个人是否认识另外一个人的代价为0(1),试设计一种算法找出明星,并给出时间复杂度。
答案:群众都认识明星,明星不认识任何群众。设其中任意2个人A,B,询问A是否认识B。若是,则A不是明星,排除之,否则B不是明星。每次询问都可以排除一人,因此最多询问n-1次,时间复杂度O(n)。