码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] Poor Pigs

时间:2017-08-01 20:54:49      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:pre   turn   检测   within   int   test   contain   log   etc   

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个水桶,其中只有1个含有毒药,假设猪喝了有毒的水会在m分钟后死亡,现在你有p分钟去实验,要求使用最少的猪x去检测出有毒药的桶。

首先计算出做实验的次数t=p/m, 1只猪可以检测出t + 1个水桶中是否含有毒药。2只猪可以检测出(t + 1) ^ 2个水桶中是否含有毒药。则按照这个思路求解即可。

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

 

[LeetCode] Poor Pigs

标签:pre   turn   检测   within   int   test   contain   log   etc   

原文地址:http://www.cnblogs.com/immjc/p/7270115.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!