C ++中的可怜猪
假设有1000个水桶,其中一个是有毒的,另一个则装满水。它们看起来都很相似。如果猪喝了毒药,它将在15分钟内死亡。一小时内发现有毒桶所需的最小数量的猪是多少?
因此,现在考虑一般情况并为此设计一种算法。因此,一般情况是,如果有n个不同的水桶,而喝猪的毒药将在m分钟内死亡,那么在p分钟内需要多少只猪才能找到有毒水桶?恰好有一个装有毒药的水桶。
当n=1000,m=15和p=60时,输出将为5。
为了解决这个问题,我们将遵循以下步骤-
ret:=0
while(minutesToTest/minutesToDie+1)^ret<buckets,这样做-
(增加ret1)
返回ret
让我们看下面的实现以更好地理解-
示例
#include <bits/stdc++.h> using namespace std; class Solution { public: int poorPigs(int buckets, int minutesToDie, int minutesToTest) { int ret = 0; while(pow((minutesToTest / minutesToDie + 1), ret) < buckets) ret++; return ret; } }; main(){ Solution ob; cout << (ob.poorPigs(1000,15,60)); }
输入值
1000 15 60
输出结果
5