LeetCode #458 - Poor Pigs

题目描述:

There are 1000 buckets, one and only one of them contains poison, the rest are filled with water. They all look the same. If a pig drinks that poison it will die within 15 minutes. What is the minimum amount of pigs you need to figure out which bucket contains the poison within one hour.

Answer this question, and write an algorithm for the follow-up general case.

Follow-up:

If there are n buckets and a pig drinking poison will die within m minutes, how many pigs (x) you need to figure out the "poison" bucket within p minutes? There is exact one bucket with poison.

有n个桶,其中有一桶有毒药,一头猪喝了毒药之后在m分钟之后会死去,那么在给定的p分钟,我们需要分辨出那一桶水有毒,求问最少需要多少头猪?由于给定了p分钟,那么一头猪可以测试p/m=k+1轮,因为如果前k轮都没死,那么就是最后一轮有毒。那么如果有x头猪的话,在p分钟内,它们能测试多少桶水呢?这里就要采用多维度,让一头猪负责一个维度,例如有3头猪可以测试4轮,那么一共可以测试4^3=64桶水,按照这个原理就可以确定猪的数目。

class Solution {
public:
    int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
        int times=minutesToTest/minutesToDie+1;
        int pigs=0;
        while(pow(times,pigs)<buckets) pigs++;
        return pigs;
    }
};

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值