标签:条件 需要 目标 min div roman 公式 mil new
- 两种思路:
- 第一种:动态规划,转化公式
下面是偶的思路。 这是一个很典型的动态规划问题。用确定minNum[n]表示鸡蛋从高n层的楼摔下不碎需要的最小次数。则有 转移方程: minNum[n ] = min(1 + max(i – 1, minNum[n-1])) for 1<=i <= n 边界条件: minNum[0] = 0; minNum[1] = 1 假设i是第一次扔鸡蛋的楼层,如果破了,则为了确定下面楼层中的安全位置,需要从第一层挨着试,需要i-1次,不碎的话上面还有n-i层,还剩两个鸡蛋,需要minNum[n-i]次。
- 第二种:分析法,写出公式
拿具体的数字作例子,假设100层楼扔16次可以搞定,那么第一次可以且最矮必须从16层扔。碎了好说,从第一层开始试,不碎的话还有15次机会,同理最矮可以从31层开始扔 每次可以扔的最矮楼层如下 16 16 + 15 = 31 31 + 14 = 45 45 + 13 = 58 58 + 12 = 70 70 + 11 = 81 81 + 10 = 91 91 + 9 = 100 超额完成目标。假设需要扔n次,则有:(此n也表示安全下落的层) n + (n-1) + (n-2) + … + 1 >= 100 n (n +1) >= 200 min(n) = 14
标签:条件 需要 目标 min div roman 公式 mil new
原文地址:https://www.cnblogs.com/ranjiewen/p/9463010.html