【动态规划】【换维】扔鸡蛋游戏 【动态规划】【换维】扔鸡蛋游戏 这是一道在《信息学奥赛一本通》上的经典题目。题目描述如下: 有k个一模一样的鸡蛋,楼的高度为n,定义鸡蛋的硬度为x,当且仅当将鸡蛋从x楼扔下不会碎,从x+1楼扔下会碎,求最坏情况下求出鸡蛋硬度的最小步数。 k≤10,n≤100。保证硬度在...
根据动态规划的状态转移方程式和自底向上的求解思路,我们需要从1个鸡蛋1层楼的最优尝试次数,一步一步推导后续的状态,直到计算出3个鸡蛋4层楼的尝试次数为止。 首先,我们可以填充第一个鸡蛋在各个楼层的尝试次数,以及任意多鸡蛋在1层楼的尝试次数。 原因很简单: 1.只有一个鸡蛋,所以没有任何取巧方法,只能从1层...
然后找到在(1,n)层中,从哪层扔下所需次数最少的情况。 1#include<cstdio>2#include<algorithm>3usingnamespacestd;4intdp[1001][1001];5intjudge_(inta,intb){6for(inti =0; i <=b; ++i) {7dp[0][i] =0;//如果没有鸡蛋,需要的次数都为08dp[1][i] = i;//如果鸡蛋只有一个,那么需要的...
《经典动态规划:高楼扔鸡蛋》你面前有一栋从 1 到N共N层的楼,然后给你K个鸡蛋(K至少为 1)。现在确定这栋楼存在楼层0 <= F <= N,在这层楼将鸡蛋扔下去,鸡蛋恰好没摔碎。现在问你,最坏情况下,你至少要扔几次鸡蛋,才能确定这个楼层F呢?O经典动态规划:高楼扔鸡蛋(by labuladong) ...
使用动态规划的方法求解,首要的我们要找到构成这个最优问题的最优子问题。 为什么可以用动态规划来求解这个问题呢?仔细一想,寻找100层,因为可以从1~100层之间的任意一层开始开始仍鸡蛋,假设f[n]表示从n层楼找到仍鸡蛋不碎安全位置的最少判断次数。假设第一个鸡蛋第一次从第i层扔下,那么有两种情况: 情况一:碎...
鸡蛋数在1-K之间和楼层N(其中2\times2^{K-1} - 1 \geq N)的时候,能用二分就用二分去优化,整个过程就是动态规划。 根据图可以看出鸡蛋数量K测试M次所能达到最高楼层大于等于目标楼层(N)的时候,M就是K个鸡蛋,N层楼做测试的最少次数。所以2个蛋最少扔14次才能让最高测试楼层大于等于100层。那3个蛋...
利用 动态规划JAVA实现 扔鸡蛋问题: public class Solution { /* * @param eggs: the number of eggs * @param floors: the number of floors * @return: the number of drops in the worst case */ public int dropEggs2(int eggs, int floors) { // write your code here //第一步永远是创建动态...
状态定义一:动态规划 + 二分查找 classSolution{public:intsuperEggDrop(intK,intN) { vector<vector<int>>dp(N +1,vector<int>(K +1,0));for(intj =1; j <= K ; ++j) dp[1][j] =1;for(inti =1; i <= N ; ++i) dp[i][1] = i;for(inti =2; i...
扔鸡蛋问题是计算机程序设计中的一个经典问题。从一幢楼房的不同楼层往下扔鸡蛋,用最少的最坏情况试验次数,确定鸡蛋不会摔碎的最高安全楼层。仅有一个鸡蛋供试验时,只能采用顺序查找法。有足够多的鸡蛋时,可以采用二分查找法。有多于一个但数量有限的鸡蛋时,采用动态规划方法求解。双蛋问题 (two-egg problem) ...
楼层扔鸡蛋问题 ==有限层数和蛋数,求即使最坏情况下需要的最少判断次数== 两个软硬程度⼀样但未知的鸡蛋,它们有可能都在⼀楼就摔碎,也可能从⼀百层楼摔下来没事。有座100层的建筑,要你⽤这两个鸡蛋确定哪⼀层是鸡蛋可以安全落下的最⾼位置。可以摔碎两个鸡蛋。(参见[])这是典型的动态规划...