扔鸡蛋问题

f[i][j]f[i][j]表示i次操作j个鸡蛋最高能测到多少层楼

f[1][1 to n]=1f[1][1\ to\ n] = 1,因为只能操作一次的话,只能假定1楼碎。

f[i][j]=1+f[i1][j1]+f[i1][j]f[i][j] = 1 + f[i - 1][j - 1] + f[i - 1][j] 本层楼的高度

如果鸡蛋没有碎,那么对应的是 f(t1,k)f(t - 1, k),也就是说在这一层的上方可以有f(t1,k) f(t - 1, k) 层;

如果鸡蛋碎了,那么对应的是 f(t1,k1)f(t - 1, k - 1),也就是说在这一层的下方可以有f(t1k1) f(t - 1, k - 1)层。

class Solution {
public:
    int superEggDrop(int k, int n) {
        if (n == 1) {
            return 1;
        }
        vector<vector<int>> f(n + 1, vector<int>(k + 1));
        for (int i = 1; i <= k; ++i) {
            f[1][i] = 1;
        }
        int ans = -1;
        for (int i = 2; i <= n; ++i) {
            for (int j = 1; j <= k; ++j) {
                f[i][j] = 1 + f[i - 1][j - 1] + f[i - 1][j];
            }
            if (f[i][k] >= n) {
                ans = i;
                break;
            }
        }
        return ans;
    }
};
算法竞赛之路 文章被收录于专栏

整理、记录算法竞赛的好题

全部评论

相关推荐

10-21 00:37
已编辑
门头沟学院 C++
小浪_Coding:你问别人,本来就是有求于人,别人肯定没有义务免费回答你丫, 有点流量每天私信可能都十几,几十条的,大家都有工作和自己的事情, 付费也是正常的, 就像你请别人搭把手, 总得给人家买瓶水喝吧
点赞 评论 收藏
分享
11-03 12:40
中山大学 Java
勇敢的突尼斯海怪选钝...:楼主这拒意向话术好得体呀 !求问HR回复态度咋样呀
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务