leetcode:458. 可怜的小猪(困难,数学)

題目:

leetcode:458. 可怜的小猪(困难,数学)_第1张图片

分析:

看完題,就想起來算法课上的一道题。
利用二进制位来解决问题。

时间有什么用,我们假设32瓶,时间允许两次,那么按4只小猪来,第一次16瓶,如果有毒,那么判断出来了,如果没死,继续用。
所以多一次实验可以少一位,即少一只小猪。

错误。

可实验次数+1
作为log的底。

以2次实验为例,2+1=3
第一次喝3进制中的1位置,有死的,直接得出,没有的话,第二次喝三进制中的2位置。
leetcode:458. 可怜的小猪(困难,数学)_第2张图片
确实挺奇妙的,我只能说记住吧!

代碼:

class Solution {
public:
    int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
        if(buckets==1) return 0;
        int c=minutesToTest/minutesToDie+1;
        return (int)(log(buckets-1)/log(c))+1;
    }
};

你可能感兴趣的:(我认为的精华,数学)