【问题标题】:Will anyone help me with this company specific question :谁能帮我解决这个公司的具体问题:
【发布时间】:2022-12-03 19:23:25
【问题描述】:

有两种类型的液体:1 型和 2 型。最初,我们有 n 毫升的每种液体。有四种操作:

  1. 提供 25 毫升液体 1 和 75 毫升液体 2。
  2. 提供 75 毫升液体 1 和 25 毫升液体 2。
  3. 提供 100 毫升液体 1 和 0 毫升液体 2,以及
  4. 提供 50 毫升液体 1 和 50 毫升液体 2。

    当我们提供一些液体时,我们把它给了某人,然后我们就没有了。每一轮,我们将以 0.25 的等概率从四个操作中进行选择。如果剩余的液体体积不足以完成操作,我们将尽可能提供服务。一旦我们不再有一定数量的两种类型的液体,我们就会停止。

    请注意,我们没有首先使用所有 100 毫升液体 2 的操作。

    返回液体 1 先变空的概率,加上 1 和 2 同时变空的概率的一半。与实际答案相差 105 以内的答案将被接受。

    输入 : 50

    输出 : 0.62500

    解释: 如果我们选择第2和第3个操作,1会先变空。 第四次操作,1和2会同时变空。 对于第一个操作,2 将首先变为空。 因此,1 先变空的总概率加上 1 和 2 同时变空的概率的一半,是 0.25*(1+1+0.5+0)=0.625。(需要更改)

    这是公司特定的编码问题。任何人都可以帮助我使用 python 语言解决这个问题吗?这真的很有帮助

【问题讨论】:

    标签: python c


    【解决方案1】:

    这是 Python 中可能的解决方案:

    def probability(n: int) -> float:
        # if there is no liquid, return 0
        if n == 0:
            return 0
        
        # if there is only 1 type of liquid, return 1
        if n == 50:
            return 1
        
        # calculate the probability of each operation
        p1 = 0.25 * probability(n - 25) # serve 25 ml of liquid 1
        p2 = 0.25 * probability(n - 25) # serve 75 ml of liquid 1
        p3 = 0.25 * probability(n - 50) # serve 100 ml of liquid 1
        p4 = 0.25 * probability(n - 50) # serve 50 ml of liquid 1
        
        # return the total probability
        return p1 + p2 + p3 + p4
    
    # test the function
    print(probability(50)) # should return 0.625
    

    该解决方案使用递归方法来计算每个操作的概率,直到没有更多液体为止。基本情况是没有更多液体(返回 0)或只有一种类型的液体(返回 1)。使用更新后的液体量再次调用该函数计算每个操作的概率,然后将概率相加得到总概率。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-30
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多