积累(三)

来源:互联网 发布:雷洋死亡真相 知乎 编辑:程序博客网 时间:2024/05/17 20:28

积累(三)

微笑问:一个房间有3个人,每个人都想知道三个人的年龄之和,但每没个人都不想让其他2个人知道自己年龄,问有什么方法得年龄和?

答:每人在自己的纸条上写下自己年龄,折起来打乱后打开加和。这样对任意一个人来讲,就无法确定其他两人与年龄的对应关系了。

微笑现有1000瓶葡萄酒,只知道其中有一瓶是毒酒,但不知道是哪瓶,喝一点点毒酒,就会致命。不想因此浪费这1000瓶酒。故给出10只老鼠,10只杯,一次性找出那瓶酒。

1、编号:

给葡萄酒标上数字:1-1000;给老鼠标上:0-9; 相应给杯标上:0-9; 每只老鼠配一只相同编号的杯子。
2、分酒:(根据2进制)

编号为1的葡萄酒分给编号为以下的杯子:0 (2^0 = 1)
编号为2的葡萄酒分给编号为以下的杯子:1 (2^1 = 2)
编号为3的葡萄酒分给编号为以下的杯子:1、0 (2^0 + 2^1 = 3)
。。。。
编号为1000的葡萄酒分给编号为以下的杯子:9、8、7、6、5、2、1、0(2^9 + 2^8 + 2^7 + 2^6 + 2^5 + 2^2 + 2^1 + 2^0 = 1000)
3、试酒:
让老鼠喝下相同编号的杯子。
4、找毒酒:
找出死掉的老鼠,记下其编号X、Y、Z……。
毒酒应该是编号为:2^X + 2^Y + 2^Z + ……

微笑瓶盖在桌上摆金字塔。将6层金字塔倒置,最少需挪动多少个瓶盖?

7个,见下图。


微笑某班46人,会乒乓球、足球、篮球、羽毛球的人数依次为40、38、35、27。问四项都会的至少几人?
总人次为40+38+35+27=140。假设每人会三项,此时总人次为46*3=138,多出来140-138=2人。于是答案为2。

微笑Linux内存的延迟分配:就是在你未使用内存(均指物理内存)的时候,操作系统是不会真正的分配物理内存的。比如:
int *p = (int*)malloc(1024 * 1024)
如果接下来你没有访问p所指向的内存,那么你会看到进程占用的内存是不是包括这1M空间的。 因此不能通过检测malloc的指针是否为NULL,来判定系统能否支持申请的内存大小(即空闲内存大于申请内存)。
微笑36个自动赛车,6个赛道,没有计时器。最少多少次能比出来最快的三辆?(from2015届腾讯秋招)

答:9次。分析见下。


微笑下面一段代码,输出结果是什么?

微笑给定一数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j]。要求:
1.在构造过程中,不允许使用除法;
2.满足O(1)空间复杂度和O(n)的时间复杂度;
3.除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等)。

2 0
原创粉丝点击