1. 题目
2. 思路
(1) 信息熵
- 求x桶液体在y轮时间内验证出毒药所需的最小猪数可以转换为求n个小猪在y轮时间内能够验证的最多桶数。
- 以2个小猪为例,若验证时间为5轮,则最多能够验证25桶液体,即pow(5,2)。
- 将25桶液体按照5*5的二维矩阵摆放,第一个小猪每一轮验证一行的5桶液体,第二个小猪每一轮验证一列的5桶液体,则根据两个小猪的死亡时间,可以唯一确定哪一桶液体是毒药。
3. 代码
public class Test {
public static void main(String[] args) {
}
}
class Solution {
public int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
int k = minutesToTest / minutesToDie;
return (int) Math.ceil(Math.log(buckets) / Math.log(k + 1));
}
}