百度的几个面试题


列出几个百度的面试题,大家做个自我评估吧。有兴趣的可以考虑下。
1.五桶球,一桶不正常,不知道球的重量和轻重关系,用天平称一次找出那桶不正常的球;
2. 有一根27厘米的细木杆,在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。木杆很细,不能同时通过一只蚂蚁。开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。假设蚂蚁们每秒钟可以走一厘米的距离。编写程序,求所有蚂蚁都离开木杆的最小时间和最大时间。
3.一个概率题:54张扑克牌,除去两张大小王剩下52张扑克牌。问红桃A和黑桃A同时被一个人拿到的概率是多少?
4.N个瓶子里装着一种盐,其中有一瓶是假盐,假盐的特点是溶于水后变色,其他的盐则不变色。现在给你X碗水找出那瓶假盐,则X至少为? (写出复杂程度估算)

编码 算法

clear 12 years ago

1)从1号和2号桶各拿一个,放上天平(1号左,2号右),如果平衡,说明这两桶球都是正常的,可以做为砝码。如果不平衡,那么1号和2号桶必有一个不正常,而其他3,4,5桶是正常的,可以作为砝码。
2)首先考虑1号2号桶不平衡的情况,这时从1号和3号桶再各拿一个球,放上天平(1号右,3号左),如果这时平衡了,说明1号桶是不正常的,如果还是不平衡,那么2号桶是不正常的。
3)如果第一步1号2号桶是平衡的,那么也好办,把3,4号桶各拿一个放上天平(3号左,4号右),这时如果还是平衡的,那么5号桶必然是不正常的。如果不平衡,说明不正常的就在3,4号桶之中。我们再用2)的方法找出来即可。

输入木杆长度 L
输入蚂蚁的个数 n
输入每个蚂蚁在木杆上的位置 x1,x2……xn
输出所有蚂蚁离开木杆的最小时间和最大时间

   
  #include<ctype.h>
  
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
int max(int a,int b)
{
return a > b? a:b;
}
int min(int a,int b)
{
return a > b? b:a;
}
int main(int argc, char** argv)
{
int L=0;
int n=0;
int speed=1;
char *p;
char *beakChar=",";
int minTime=0;
int maxTime=0;
if(argc!=4)
{
printf("params number must equal 4");
}
L=atoi(argv[1]);
n=atoi(argv[2]);
strtok(argv[3],beakChar);
while((p=strtok(NULL,beakChar)))
{
int position=atoi(p);
minTime=max(minTime,min(position,L-position));
maxTime=max(maxTime,max(position,L-position));
}
printf("min time:%ds,max time:%ds\n",minTime,maxTime);
}

酱油最帅气 answered 12 years ago

Your Answer