C++ | Leetcode C++题解之第458题可怜的小猪

题目:

题解:

cpp 复制代码
class Solution {
public:
    int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
        if (buckets == 1) {
            return 0;
        }
        vector<vector<int>> combinations(buckets + 1,vector<int>(buckets + 1));
        combinations[0][0] = 1;
        int iterations = minutesToTest / minutesToDie;
        vector<vector<int>> f(buckets,vector<int>(iterations + 1));
        for (int i = 0; i < buckets; i++) {
            f[i][0] = 1;
        }
        for (int j = 0; j <= iterations; j++) {
            f[0][j] = 1;
        }
        for (int i = 1; i < buckets; i++) {
            combinations[i][0] = 1;
            combinations[i][i] = 1;
            for (int j = 1; j < i; j++) {
                combinations[i][j] = combinations[i - 1][j - 1] + combinations[i - 1][j];
            }
            for (int j = 1; j <= iterations; j++) {
                for (int k = 0; k <= i; k++) {
                    f[i][j] += f[k][j - 1] * combinations[i][i - k];
                }
            }
            if (f[i][iterations] >= buckets) {
                return i;
            }
        }
        return 0;
    }
};
相关推荐
郝学胜-神的一滴6 分钟前
深入解析Mipmap层级判定原理:从理论到实践
c++·unity·godot·游戏程序·图形渲染·unreal engine
雾岛听蓝6 分钟前
探索C++继承机制
开发语言·c++
名字不好奇20 分钟前
在C++中 如何实现java中的Stream
java·c++
喵星人工作室24 分钟前
C++传说:神明之剑0.2.1
开发语言·c++·游戏
狐5731 分钟前
2026-01-12-LeetCode刷题笔记-1266-访问所有点的最小时间.md
笔记·算法·leetcode
瑞雨溪37 分钟前
力扣题解:740.删除并获得点数
算法·leetcode·职场和发展
程序员-King.40 分钟前
day125—二分查找—寻找峰值(LeetCode-162)
算法·leetcode·职场和发展
老鼠只爱大米41 分钟前
LeetCode算法题详解 3:无重复字符的最长子串
算法·leetcode·面试题·滑动窗口·无重复字符的最长子串·最长子串
紫色的路42 分钟前
TCP消息边界处理的精妙算法
c++·网络协议·tcp/ip·算法
chamu991 小时前
C++ 的可调用对象
开发语言·c++