今日下午去面试这个公司,依稀记得几个很有意思题目,也算是考察个人思考逻辑能力。下面分享几个还算有意思的题目。
1、有17根等长木棍,每根长度为11.1,现在切成等量的两种木棍,以下简称A木棍和B木棍。
A木棍长1,B木棍长0.7 求问:最多能切出多少组木棍(1个A和1个B称为1组)。
A 99 B 105 C 111 D 125
解答:显然17*11.1/(1+0.7) = 111 也就是说利用率为100%的时候,能达到111组。于是我们考虑如何能100%利用这些棍子。首先考虑一根棍子的拆解
如下:11.1 = 3*0.7 + 9*1 1
11.1 = 13*0.7 + 2*1 2
显然要100%利用率只能是如上两种切法。假设切法1切了(k)个木棍,切法2切了(17-k)个木棍
则:k*3 + 13*(17-k) = 9*k + 2*(17-k) 若此方程有正整数解,则可以达到100%利用率。
解得k=11 。 答案为111
2、有两个杯子,容量分别为30,70,求如何最快得到20和80
这种小学数学竞赛见过的题目。下面直接给出解法了。80的留给读者思考,先得到10即可。
30 | 70 杯子
――――――――
30 | 0 30装满水
0 | 30 30的水全部倒入70
30 | 30 30再装满水
0 | 60 30的水再全部倒入70
30 | 60 30再装满水
20 | 70 30的水再倒入70直到满
至此,得到20
3、有4个人过独木桥,仅有一个手电筒,过桥必须依赖手电筒。桥一次最多允许两个人,求这4个人最快过桥时间。其中:两人一起过桥的时间是计以慢的那个人时间。
四个人过桥时间:1,2,5,8
解答:初看这道题目,可能很容易就进入这样的思考:每次让最快的人来护送。
于是:
1、1,8电筒过桥 +8
2、1带电筒回 +1
3、1,5电筒过桥 +5
4、1带电筒回 +1
5、1,2电筒过桥 +2
总耗时为:17
但是这个却不是最优。
当人数等于1,2,3的时候:答案很容易得出;
当人数大于等于4时:
若设过桥速度最快的那个人过桥时间为a,第二快为b;过桥第二慢的那个人过桥时间为y,最慢为z;
此时有两种过桥方案:
一.最快和次快的人先过,然后最快的回来,然后最慢与次慢的人再过,次快的回来;
二.最快的和最慢的过,快的回来,在和次慢的过,快的再回来;
最优方案:
1、1,2电筒过桥 +2
2、1带电筒回 +1
3、5,8电筒过桥 +8
4、2带电筒回 +2
5、1,2电筒过桥 +2
总耗时为:15
4、有一个水库,假设年降水量恒定;水库可供12W人使用20年。由于某些原因人口增加到15W,水库的水只够使用15年。市长呼吁节约用水,希望水可以用到30年。求每个人的用水量为原来的几分之几。(假设人数不会再增加,年降水恒定)
解答:初看此题,还有点迷糊,一直纠结在:12*20 > 15*15 ,后来一想,水库应该还有存储。
假设水库本来有水W,年降雨为k,每人用水为y,则有
W + 20*k = 12*20*y
W + 15*k = 15*15*y
假设节约用水后的人用水量为x,则
W + 30*k = 15*30*x
以上三式,求解得 x = 3/5 * y
5、有序数组{1,2,3,4},进行移动,比如移动1为{4,1,2,3},移动2位{3,4,1,2}。现在有一个这样的有序数组,经过若干位移,但不知道移动了多少。求在该数组查找某个数的效率。
解答:假设数据为{a1,a2,...,an},假设移位了k,则{a1,a2,...,ak},{ak+1,...an}分别有序。
二分查找,找出am,则am必然属于{a1,a2,...,ak}或{ak+1,...an},则必然有
{a1,a2,...,am}或者{am,am+1,...,an}其中一个是有序的。
a。若待查找的数是在有序的一组数中,则直接二分查找即可。
b。若待查找的数不在有序的一组,则在另一组中查找。
c。另一组无序的数组,仍然满足{a1,...,an}的性质。此时问题规模缩减,递归子问题即可。
时间复杂度logn
比如:{17,20,33,1,3,5,6,8,13,15},查找20
1、二分数组{17,20,33,1,3},{5,6,8,13,15}
2、第二组有序,20不在5~15,所以查找第一组数{17,20,33,1,3}
3、{17,20,33,1,3}满足有序数组移位的性质,递归即可。
4、{17,20} {33,1,3},发现20在有序的那组中17~20,则直接对有序数组二分查找即可。