积累(三)
积累(三)
问:一个房间有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次。分析见下。
下面一段代码,输出结果是什么?

1.在构造过程中,不允许使用除法;
2.满足O(1)空间复杂度和O(n)的时间复杂度;
3.除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等)。
最后更新:2017-04-03 07:56:58