【问题标题】:Find the time it takes fluid to reach the nth cup找出液体到达第 n 个杯子所需的时间
【发布时间】:2014-02-06 16:17:04
【问题描述】:

这是我从老师那里得到的额外作业。

杯子排列成树状结构,如下所示:

  1
 2 3
4 5 6

1 号杯子装满需要 10 秒,然后溢出到 2 号和 3 号杯中。(假设没有溢出)。由于水流被分开,杯子 2 和 3 需要 20 秒才能装满。总的来说,通过将水倒入杯子 1 来装满杯子 3,需要 30 秒。第 5 杯需要 50 秒,以此类推。

这是一个表格,其中包含正确的行值和流体到达下一个杯子所需的秒数。

    1(10)
 2(30) 3(30)
4(70) 5(50) 6(70)

提出的问题是针对边界为 r

我已经为此苦苦思索了大约 24 小时,但我离解决它还差得远。我知道这与帕斯卡的三角形和递归有关。我还要指出,这不是一个评分作业,而只是一个老师提出的一个未评分的有趣问题。

编辑: 在我的笔记中添加了一个更易于理解的数据结构。

1:   1
2:  1 2
3: 1 2 3

鉴于这种结构,我发现根据以下公式,水流分布到它下面的杯子的比例与帕斯卡三角形有关

h(r,c)=P(n,c)/2^(n-1)
where P(n,c) returns the number contained in the according row in Pascal's triangle

然后我用它用以下公式计算秒数:

t(r,c)=(2^(n-1)/P(n,c))*10

前 3 行是这样,但在那之后就分崩离析了,因为杯子上方的 2 个杯子的水流不会同时开始。

我还尝试了一个递归函数,它可以计算其父级,它们位于 (r-1,c) 和 (r-1,c-1) 中并应用前面的公式,但由于 i 的原因它不正确上面已经解释过了。

【问题讨论】:

  • 你这个问题的第一句和最后一句有些矛盾...
  • 一个半答案:你在正确的轨道上使用帕斯卡三角形。但有一件事:不要考虑“填充时间”,而是考虑“填充率”:1 号杯为 0.1,2 号和 3 号杯为 0.05,等等。
  • @KarolyHorvath 我认为它是 50,因为 2 和 3 都流入一次(30 秒后),所以它会以与它们相同的速度填充
  • 如果一个节点有多个父节点,这不是一棵树。
  • @KarolyHorvath,第 5 杯需要 50 秒,因为第 1 杯需要 10 秒,第 2 和第 3 杯需要 20 秒,然后第 5 杯与第 2 杯的流量相同。 1/4 + 1/4 = 1/2。由于我忙于工作和其他事情,我花了 24 小时在这上面,它只是在我的脑海里出现了一段时间。

标签: algorithm math data-structures


【解决方案1】:

【讨论】:

    【解决方案2】:

    这里的递归关系可用于使用动态规划找到解决方案:-

    if(T(r-1,c-1)<T(r,c)) {
    
      T(r,c) = T(r-1,c) + (1-F(r-1,c)*(T(r-1,c)-T(r-1,c-1)))/(F(r-1,c-1)+F(r-1,c));
      F(r,c) = F(r-1,c) + F(r-1,c-1);
    }
    
    else if(T(r-1,c)<T(r-1,c-1)) {
    
       T(r,c) = T(r-1,c-1) + (1-F(r-1,c-1)*(T(r-1,c-1)-T(r-1,c)))/(F(r-1,c-1)+F(r-1,c));
       F(r,c) = F(r-1,c) + F(r-1,c-1);
    }
    
    else {
    
       T(r,c) = T(r-1,c-1) + 1/F(r-1,c-1);
       F(r,c) = F(r-1,c-1);
    }
    
    for corner cases like  
    T(r,1) = T(r-1,1) + 2/F(r-1,1) and T(r,r) = T(r-1,r-1) + 2/F(r-1,r-1) and T(1,1) = 10
    
    F(1,1) = 1/10  
    

    注意:我认为可能存在封闭形式但很难解决

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      相关资源
      最近更新 更多