认真对待每一道算法题 之 找明星问题 - 淘宇瀚

n个人中只有一个明星,明星不认识其他所有的人,而其他人都认识明星,不是明星的人可能认识也可能不认识。你每次只可以问一个人是否认识另一个人这样的问题,问最少问多少次可以找出明星。

做法1:

将所有人站队,按照顺序(假如编号分别为1、2、3.。n),首先问1,2互相认识,有四种情况出现:

(1)1 认识 2,2不认识1, 认识别人的肯定不是明星,排除1;

(2)1 不认识2,2认识1, 根据(1)的道理,同样可以排除2;

(3)1与2 互相认识,可以断定,两个人都不是明星,随机删除一个就好;

(4)1与2 相互认识,同(3),随机删除一个就好;

接下来,将3号与之前1与2比较之后的剩余者进行同样方式的比较,依次类推,最后还剩余的那个就是明星了;

认真对待每一道算法题 之 找明星问题 - 淘宇瀚

时间: 2024-11-21 04:28:11

认真对待每一道算法题 之 找明星问题 - 淘宇瀚的相关文章

算法——一天一道算法题篇——找只出现一次的两个数

找只出现一次的两个数 题目: 一个整型数组里除了两个数字只出现一次之外,其他的数字都出现了两次.请写程序找出这两个只出现一次的数字. 举例说明: 现在有一个数组:{1,3,4,2,4,3}; 假设数组元素的规模不是很大,想要找到只出现一次的元素,可以定义一个辅助数组,flag[100];里面存放的是数组元素出现的次数,flag数组的下标表示的是数组:{1,3,4,2,4,3}里的元素. 代码如下: package hello.ant; public class AlogArrayFind2 {

认真对待每一道算法题 之 产生全排列

上一篇讲到生成字典序其实算法很简单,采用递归的思想, [1,2,3,4] 首先 是 1与2互换位置,[2,1,3,4],然后递归处理[1,3,4]:当递归处理完之后:1再与3换位置,变成[3,2,1,4],然后接着处理[2,1,4],就是这样来处理: 代码如下:

一天一道算法题---6.26---二分查找

感谢微信平台---一天一道算法题----每天多一点进步-- 好累啊  现在在用win7自带的输入法 打起来真麻烦 快点把这2天的搞完就重装了 还是直接来源于----〉 待字闺中 分析 给定一个数组A,其中有一个位置被称为Magic Index,含义是:如果i是Magic Index,则A[i] = i.假设A中的元素递增有序.且不重复,请给出方法,找到这个Magic Index.更进一步,当A中允许有重复的元素,该怎么办呢? 没有重复元素的情况 一些同学在遇到这个题目的时候,往往会觉得比较简单.

一天一道算法题--6.19--二分搜索

感谢微信平台---一天一道算法题---每天多一点进步 这是昨天的 只贴下题目 == 再把今天的也是一样处理了   这2天 不想写 可能晚上会有改变吧.. problem: 给定一个最多包含40亿个随机排列的32位 二进制的无符号整数 找出不在文件中的数.显然 由于 2^32=4294967196大于4亿 所以缺少的数不止一个 现限制只能使用几个外部的临时文件和仅几百个字节的内存. ****************************** 过了明天 就没事了 =-= 一天一道算法题--6.19

一天一道算法题--5.29---动态规划之数塔

感谢微信平台:  一天一道算法题-------每天多一点进步----------- 这题的话 我就直接用我们自己Oj的题目了 戳我 好吧  如今看这题  是很简单  当时 是块被它搞崩溃了   因为 还不知道  dp 这个概念 现在有了这个概念   好多了  但还是 只能做做这种水 dp.... 多么悲伤的故事 这题 因为太水了   晚上 应该会去找个高质量的题来做的 如果你是dp刚刚学 这题真的很适合你 1 #include <iostream> 2 #include <cstring

一天一道算法题---6.16--最大独立集

感谢微信平台---一天一道算法题---每天多一点进步 这题 我都懒得贴了.... 因为 很巧合的是 我已经做过他了 我也详细地讲过自己的 颠沛 做这题时 要是 感兴趣 可以去找下 我的随笔 -- 前面的记录 a good news ---- 昨晚和晓爷 一起看的那个 蛮有意思的阶乘AC了  但还有个关于阶乘 17/0 的题 =-= 跑步去了 身体太虚 萎 ... 一天一道算法题---6.16--最大独立集,布布扣,bubuko.com

一天一道算法题---5.26---思维锻炼

感谢 微信平台: 一天一道算法题 -----  大家没事都可以去关注他 --- 不是做广告的---- 题目大意:  给你一个长度为n的整数序列A1,A2,--,An,找出两个整数Ai和Aj(i<j),使得Ai-Aj尽量大 反正 暴力肯定超时..... 数据大小 我也就给出了 反正 尽量用最好算法去解 就是了 嗯 它给的是o(n)的时间复杂度和空间度   但是很容易转换成o(1)空间度 o(n)时间复杂度的写法 这边给出个 与这题意相同的一个 题目  发现竟然是我以前WA的 怪不得 那么熟悉 ..

一天一道算法题--5.25--bfs或者最短路

好吧 还是拖到了5.26来写本是5.25的题... 自我 宽恕 老样子---  感谢    微信平台: 一天一道算法题   无聊的你 也可以去关注一下 题目 链接:http://poj.org/problem?id=3126 题目 大意:  给你2个素数 问从一个素数到另一个转换的过程中  每次只允许改变一个位上的数 并且在改动过程中 保证它也是素数  最少需要多少次实现这个转换? ok 其实 这题 不算难  当告诉你这是个搜索以后  只是在进行个位 十位 百位 千位 上各个数字尝试的时候 可能

一天一道算法题---6.3---二分运用

感谢微信平台 : 一天一道算法题 -----  一天多一点进步----- 先来段 废话: 已经 3 4天没更了 主要还是自己 太懒了 .... 好 让我们 开始吧 题目链接: touch  me 是不是 有点长啊  最可恶的是 还有张 诱人的 馅饼  --- 话说 有个很好的美国系列校园青春 sex movie ---  American Pie  --- 美国派----- 题目大意: 有F+1个人来分N个圆形蛋糕 每个人得到的必是一整块蛋糕 (不是由几块拼在一起的)面积要相同 求每个人最多能得