这道题可以搜索google扔玻璃珠笔试题以及腾讯2017的校招笔试也有一道这样的题,不同的是,以上的题中只是用了两颗玻璃珠,而这里是m颗玻璃珠;
不过,同样是扔珠子,所以思路都是一样,只不过变得更有普适性;
以下是我的思路:
假设我有m颗珠子,然后有n层楼,至少要扔a(m, n)次
那么随机扔到k层,有两个结果:
* 珠子碎了:从1到k-1层继续扔,结果是a(m-1, k-1);
* 珠子没碎:从k+1到n层继续扔,结果是a(m, n-k);
那么max{a(m-1, k-1)+1, a(m, n-k)+1}就是从第k层楼扔玻璃珠需要试的最大次数
所以a(m,n) = min{max{a(m-1, k-1)+1, a(m, n-k)+1}for(1<=k<=n)}
* 初始条件:a(m, 0) = 0, a(m, 1) =