论坛首页 综合技术论坛

百度二面智力题(破碎临界层)

浏览 55399 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-11-01  
这个破碎临界层 是指这层会破 还是不会破?
0 请登录后投票
   发表时间:2011-11-01  
J_wp 写道
请按你这个.2个球扔4次可以确定多少层?


10层
0 请登录后投票
   发表时间:2011-11-01  
	public static long n(long times, long balls){
		if(balls>times){
			return n(times,times);
		}
		if(balls == 1L){
			return times;
		}else{
			balls--;
			times--;
			long sum = 1L;			
			while(times>0){
				sum += 1L + n(times, balls);
				times--;
			}
			return sum;
		}
	}

是这样子的么?
0 请登录后投票
   发表时间:2011-11-01  
gtssgtss 写道
	public static long n(long times, long balls){
		if(balls>times){
			return n(times,times);
		}
		if(balls == 1L){
			return times;
		}else{
			balls--;
			times--;
			long sum = 1L;			
			while(times>0){
				sum += 1L + n(times, balls);
				times--;
			}
			return sum;
		}
	}

是这样子的么?


就是这个样子
0 请登录后投票
   发表时间:2011-11-01   最后修改:2011-11-01
我的理解就是解一个方程式  2个球,100层。
  n+(n-1)+(n-2)+(n-3)+(n-4).....<100层
如果是三个球,就是多一层循环,将前一次算出来的N再代入100 然后再加上100/n取整,球再多就可以循环此算法。
0 请登录后投票
   发表时间:2011-11-02  
我抛个砖

能不能根据什么物理公式计算出这个临界点,一些外界的因素不考虑,例如什么风向,风速,地面的材质,球的重量是可以知道的,在球的某一点(也就是受力面)压强大于多少玻璃球就会碎,就跟玻璃的熔点是多少一个意思,然后计算在什么高度能达到这个值

说的不对不要抽我啊,我只是把我的想法说出来
0 请登录后投票
   发表时间:2011-11-02   最后修改:2011-11-02
vissalan 写道
计算在什么高度能达到这个值


0 请登录后投票
   发表时间:2011-11-02  
hexh2003 写道
不均分块:
分为m块,每块有Cm层楼
该问题等同于:
C1+C2+C3+...+Cm=n时,求集合{i+Ci|i∈[1,m]}中的最大值何时最小.
假设当k∈[1,m]时,k+Ck为该集合中的最大值,则:
任意p∈[1,m]有k+Ck≥p+Cp  ==>Cp≤Ck+(k-p)
则:C1+C2+C3+...+Cm≤mCk+(k-1)+(k-2)+...+(k-m)
mCk+(k-1)+(k-2)+...+(k-m)=mCk+(k-1)k/2-(k-m-1)(k-m)/2
=mCk+km-m(m+1)/2
mCk+km-m(m+1)/2≥n
Ck+k≥n/m+(m+1)/2≥2*(n/m)^0.5*[(m+1)/2]^0.5
第一个等号成立条件:Cp=Ck+(k-p)  即Cm=Cm-1-1
第二个等号成立条件:n=m(m+1)/2

m=[((8n+1)^0.5-1)/2]

当n=100时求得m=14,但m=14时n=105,所以舍弃2块C1=1,C2=2,并且C3=1
由下到上每块的层数分别为:14,13,12,11,10,9,8,7,6,5,4,1
最坏情况的次数为:i+Ci-1=14

蛋疼的早晨......

上上周去baidu面试的,看来没戏了.

面试之前看了一个星期的算法,以前不知道栈,堆为何物,呵呵,可惜一题没问啊...
http://v.163.com/special/opencourse/algorithms.html
MIT的算法导论公开课


Ck+k≥n/m+(m+1)/2≥2*(n/m)^0.5*[(m+1)/2]^0.5
第一个等号成立条件:Cp=Ck+(k-p)  即Cm=Cm-1-1
第二个等号成立条件:n=m(m+1)/2
m=[((8n+1)^0.5-1)/2]
这部分是怎么推导出来的?第一个等号指哪个?第二个等号又是指哪个?

0 请登录后投票
   发表时间:2011-11-02  
hexh2003 写道
不均分块:
分为m块,每块有Cm层楼
该问题等同于:
C1+C2+C3+...+Cm=n时,求集合{i+Ci|i∈[1,m]}中的最大值何时最小.
假设当k∈[1,m]时,k+Ck为该集合中的最大值,则:
任意p∈[1,m]有k+Ck≥p+Cp  ==>Cp≤Ck+(k-p)
则:C1+C2+C3+...+Cm≤mCk+(k-1)+(k-2)+...+(k-m)
mCk+(k-1)+(k-2)+...+(k-m)=mCk+(k-1)k/2-(k-m-1)(k-m)/2
=mCk+km-m(m+1)/2
mCk+km-m(m+1)/2≥n
Ck+k≥n/m+(m+1)/2≥2*(n/m)^0.5*[(m+1)/2]^0.5
第一个等号成立条件:Cp=Ck+(k-p)  即Cm=Cm-1-1
第二个等号成立条件:n=m(m+1)/2

m=[((8n+1)^0.5-1)/2]

当n=100时求得m=14,但m=14时n=105,所以舍弃2块C1=1,C2=2,并且C3=1
由下到上每块的层数分别为:14,13,12,11,10,9,8,7,6,5,4,1
最坏情况的次数为:i+Ci-1=14

蛋疼的早晨......

上上周去baidu面试的,看来没戏了.

面试之前看了一个星期的算法,以前不知道栈,堆为何物,呵呵,可惜一题没问啊...
http://v.163.com/special/opencourse/algorithms.html
MIT的算法导论公开课

I like this logic.

There is a minor problem:

C1+C2+C3+...+Cm=n时,求集合{i+Ci|i∈[1,m]}中的最大值何时最小.

should be

C1+C2+C3+...+Cm=n时,求集合{(i-1)+Ci|i∈[1,m]}中的最大值何时最小.

Then eventually, we should have

mCk+(k-1)m-m(m-1)/2≥n

All Ck + (k-1) are the same in the worst case, and so they are just m in worst case.
Now we have
m^2 - m(m-1)/2 >= n
This means m(m+1)/2 >=n. The left side is just 1 + 2 + ... + m.
The rest follows through my blog.

0 请登录后投票
   发表时间:2011-11-03  
都说了这是智力题,我觉得应该抛弃程序员的固定思维。
只有2个球的前提下,只有在保证至少有一个球不破的前提下,才能找到临界点
答案应该是2,4,6,8....这样上去。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics