有的时候发现一个解不一定难,但是证明是最优解却有点困难。
得多学点数学了,因为只知其然,不知其所以然的人很难到更高的地方,或许我这人就这德行了,不知道所以然就睡不着觉。
说出来可能没人信,我想了一个问题快一个月了,还没思路,继续搞,嗯。哈哈,这就是思考的乐趣吗?
周末学习点证明最优解,然后继续learn C。
哈哈,我思考了那一个月的问题就是谷歌的那道面试题:
Q: 只给你二个鸡蛋,你能上100层楼,你想知道鸡蛋的硬度。鸡蛋可能很硬或很脆弱,如果鸡蛋从第m层掉下而没破裂,而从第m+1层掉下就破裂了,那么这个鸡蛋的硬度就是m。你需要找出这个m和在最坏情况下最少试验次数。(经典鸡蛋问题)
我还没学到各种算法,比如二分,动态规划。但我觉得这道题里面肯定有它必然的数学规律,而我就是想从这种感性认识出发,看看有没有什么必然的规律。
后来有点明白了。我的理解是,既然要求找出最坏的情况,且要求最少实验次数,那么你第一次扔鸡蛋最坏的情况就是你最后扔鸡蛋的总次数。
假设你第一次扔鸡蛋而导致的最坏的次数为A,如果之后的次数比A大,那么显然这种解法的次数要增加,之前第一次的情况就会没有任何用处。
如果之后的次数比A小,最后用完的A之后,楼层不一定能确定完。
按照这个思路确定下去,既是后来的答案:
n+n-1+n-2+....+1 >= 100.
n(n+1)*1/2>=100
n>=14