IBM面试:几只狗生病
村子中有50个人,每人有一条狗。在这50条狗中有病狗(这种病不会传染)。于是人们就要找出病狗。
每个人可以观察其他的49条狗,以判断它们是否生病(如果有病一定能看出来),只是自己的狗不能看。观察后得到的结果不得交流,也不能通知病狗的主人。主人一旦推算出自己家的是病狗就要枪毙自己的狗(发现后必须在一天内枪毙),而且每个人只有权利枪毙自己的狗,没有权利打死其他人的狗。
第一天大家全看完了,但枪没有响,第二天仍没有枪响。到了第三天传来一阵枪声,问村里共有几条病狗,如何推算得出?
解析:3条。
思路:若只有一条病狗,第一天病狗的主人看不到病狗,从一定有病狗这一事实推断,自己的狗是病狗,从而在第一天就会枪毙自己的狗;
若有两条病狗,第一天,这两天病狗的主人都看到了一条病狗,但这时没法推断自家的狗是不是病狗,第一天不会有狗被枪毙。第二天的时候,因为第一天没有狗被枪毙,从而可以推断出不止一条病狗,这两条病狗的主人就会在第二天枪毙自己的狗。
……
以此类推,若第n天有枪响,则有n条病狗。
腾讯面试题:给出上排数,写出下排数
给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数,要求下排每个数都是先前上排那十个数在下排出现的次数。上排的十个数如下:【0,1,2,3,4,5,6,7,8,9】
解析:下排的十个数为:【6,2,1,0,0,0,1,0,0,0】
思路:因为下排的每个数字都是对应的上排数字在下排出现的次数。因此,可以得到几个式子:
设下排的十个数为【n0,n1,n2,…,n9】。
(1)n0+n1+n2+…+n9=10
(2)(n0 * 0)+ (n1 * 1)+(n2 * 2)+…+(n9 * 9)=10
由(1)式可以得知,0<=n0,n1,n2,n3, … , n8,n9<=10
又结合(2)式可以推出:
n9可等于0或1。
若n9=1,则n0,n1,n2,…,n8中有一个数等于9。
结合(2)式可得知,只有可能n0或n1等于9。
- 若n0等于9,则n1~n9都为0,与前面n9=1矛盾。同理,n1也不能等于9。
因此n9不能等于1。由此推出n9=0
同理可推出n8,n7,n6,…,n1,n0的值。结果为【6,2,1,0,0,0,1,0,0,0】
拓展:
上排有n个数,分别为【a1,a2,a3,…,an】,设下排的数为:【b1,b2,b3,…,bn】
则:(1)a1* b1+a2* b2+a3* b3+…+an* bn=n
(2)b1+b2+b3+…+bn=n
且,若ai为负数,则bi一定等于0
结论:0出现的次数为n-4,1出现的次数为2,2出现的次数为1。n-4出现的次数为1。如果数列中无这四个数,则无解。
【前面两个式子就是突然间想到的,至于为什么、怎么得来的,我也不是很理解。后来看到篇博客也写到了这个式子,想了解透彻些的,可以看看:https://blog.csdn.net/wcyoot/article/details/6428305
】
阿里巴巴面试题:男女比例
澳大利亚的父母喜欢女孩,如果生出来的第一个女孩,就不再生了,如果是男孩就继续生,直到生到第一个女孩为止,问若干年后,男女的比例是多少?
解析:1:1
原文链接:https://blog.csdn.net/hanchengxi/article/details/9410165
淘宝笔试题:N个鸡蛋放到M个篮子中
N个鸡蛋放到M个篮子中,篮子不能为空,要满足:对任意不大于N的数量,能用若干个篮子中鸡蛋的和表示。对输入整数N和M,输出所有可能的鸡蛋的放法。
解析:
原文链接:https://www.cnblogs.com/null00/archive/2012/06/20/2555541.html
百度移动开发笔试题:荷兰国旗(三色球排序问题)
三色球排序的问题,相同的球放到一起,让你按顺序输出红白蓝三种颜色的球,可以用012来表示,要求只能扫描一次数组。
解析:
原文链接:https://blog.csdn.net/Manketon/article/details/39522821