异常小球称量次数求解
题目:一架天平,n个小球,其中有一个小球重量比其他小球重,找出这个小球,最坏情况下最好称几次?
假设称重次数函数关系f,则称重次数为f(n),其中n为小球个数
分析:
f(0)无意义;
f(1) = 0;
f(2) = 1;
f(3) = 1;
f(4) = 2; -> f(2)/f(2) -> f(2) ==> 1+1
f(5) = 2; -> f(2)/f(2) -> f(2) ==> 1+1
f(6) = 2; -> f(2)/f(2) -> f(2) ==> 1+1
f(7) = 2; -> f(3)/f(3) -> f(3) ==> 1+1
f(8) = 2; -> f(3)/f(3) -> f(3) ==> 1+1
f(9) = 2; -> f(3)/f(3) -> f(3) ==> 1+1
f(10) = 3; -> f(4)/f(4) -> f(4) ==> 2+1
f(11) = 3; -> f(4)/f(4) -> f(4) ==> 2+1
.
.
.
f(27) = 3; -> f(9)/f(9) -> f(9) ==> 2+1
f(28) = 4; -> f(10)/f(10) -> f(10) ==> 3+1
.
.
.
总结:
f(1) = 0;
f(2) = 1;
f(3) = 1;
…
f(n) = f((n+2)/3) + 1;(n>1)
==>
n > 1时,log(n)/log(3),表示log以3为底对n取对数
f(n) = (int)log(n)/log(3); //向上取整
或者
f(n)= (int)log(n-1)/log(3)+1 //向下取整