初步计算21。由于毒发时间是固定的一个小时之内,所以第一天的每一个小时都可以用来试毒酒。
详细计算过程先不写了,直接从结论说
把10000桶酒分成22组,每组最多455桶。开始(0点)每人试喝其中一组,确保第二天0点前能确定毒酒在哪一组(455桶)范围内。
接下来,1点,21个人每人都从每组的455桶中试一桶(不重复),即每人试喝22桶。这样21个人这一小时共试了455桶中的21桶;
2点,同理;如此,1点到22点,21个人共试22次,可以将每组内的455桶都试一遍(21*22=462>455);
23点,每人依然试每组中的一桶,共22桶,注意,此次试的是另一个人试过的,可以循环(1号喝2号试过的,2号和3号的…………23号喝一号的)。
第二天0点,两种情况:(1)没有人毒死。这个简单,确定毒酒在没人在0点试喝那组,等待结果就好,第二天23点前总有一个人被毒死;根据时间和人判断是哪一桶;(2)其中一个人被毒死了。那么毒酒在他在0点喝的455桶范围内,和前一种情况不同,由于一个人死了,那么他在本组内1点到22点喝的22桶不能被验证,但由于在23点的试喝使得待验证的少了一桶,只剩21桶,于是剩下的20个人在这21桶中每人试喝一桶;
针对第二种情况,第二天0点到22点之间,有人被毒死,和第一种情况一样,确认毒酒。没人毒死,确定在22桶中,23点前,如果没人被毒死,则毒酒在21桶中,这样,酒会之前,根据20个人哪个被毒死,或者没人毒死,确认毒酒在哪一桶中。
此题比较复杂,我只简单的解答一下,更复杂的方法可能有更优解,比如交叉重复试喝什么的(死人更多的方法),抛转引玉,欢迎大家讨论。