面试例题1——经理女儿年龄问题思路:先遍历选出满足年龄之和为13的所有组合,然后选取年龄之积相同的那些组合,再根据“我只有一个女儿超过5岁”这个条件选出适宜的组合。
注意:需要把“我只有一个女儿超过5岁”作为第二条件;
#include<iostream>
using namespace std;
int main()
{
int i,j,k;
for(i=1;i<11;i++)
{
for(j=i;j<11;j++)
{
for(k=j;k<11;k++)
{
if((i+j+k)==13)
{
cout<<"i= "<<i<<", "<<"j= "<<j<<", "<<"k= "<<k<<", "<<"i*j*k= "<<i*j*k<<endl;
break;
}
}
}
}
system("pause");
return 0;
}
面试例题2——1000瓶药水,至多1瓶剧毒,10只狗,在24小时内通过狗试药的方式找出哪瓶药有毒或者全部无毒(狗服完药X小时毒发。19<X<23)
思路:将狗狗 编号为1~10,将药水用2进制编号,然后按照药水第几位为1给相应的狗狗喂药。
面试例题3——选猪问题:38只猪,选出其中3只跑得最快的,场地允许6只猪同时跑。在没有计时器的情况下如何最快的选出最快的3只猪。
思路:将猪分为7组,其中1~6组每组6只,第7组2只,编号为a,b,c,d,e,f,g;
(1)第1~6组分别赛跑,将每组的第1、2、3名记下来,如a1、a2、a3,b1、b2、b3...
(2)让a1、b1、c1、d1、e1、f1一起赛跑,假设第1名为a1,假设第2名为b1,假设第3名为c1,此时a1必然为最快的3只猪之一(只有g组的2只可能比它快);此时需要做的就是在剩下的猪(除了g组的两只)中找出最快的2只,首先排除掉d、e、f组,由于有可能出现a2、a3比b1快,b2比c1快的情况,因此:
(3)让a1、b1、c1、a2、a3、b2一起赛跑、选出最快的3只
(4)让第3步中最快的3只与g组的2只赛跑,最后选出最快的3只
共有:6+1+1+1=9次赛跑