解析1: 状态表示:f[i][j]f[i][j]表示在ii层楼,jj个鸡蛋的测量方案中最坏情况的最小值。 其中,jj个鸡蛋在足够多的情况下可以不全部用完。

状态计算:

1.不使用第jj个鸡蛋,方案数为f[i][j1]f[i][j-1]

2.使用第jj个鸡蛋,则有11~ii层共ii种情况可以扔,假设在第kk层扔:

  • 蛋碎:搜索区间变成[1,k1][1, k - 1],鸡蛋数减少11,方案数为f[k1][j1]f[k - 1][j - 1]
  • 蛋没碎:搜素区间变成[k+1,i][k + 1, i],鸡蛋数不变,方案数为f[ik][j]f[i-k][j]

3.枚举kk的过程中,每次得到的结果最大值即为最坏情况(即第kk层楼扔的最坏情况),而所有最坏情况的最小值就是我们有ii层楼,jj个鸡蛋要扔的次数。

解析2: 状态表示:f[i][j]f[i][j]表示用jj个鸡蛋测量ii次能测量的区间长度的最大值 状态计算:

  • 在某位置扔第jj个鸡蛋后,蛋碎,那么接下来还有j1j-1个蛋,i1i-1次,即f[i1][j1]f[i-1][j-1]
  • 蛋不碎 f[i1][j]f[i-1][j]
  • 碎和不碎是不同的情况,二者计算的最长区间没有交集 因此要相加
  • 加上本次的一次
  • 所以最终状态转移方程:f[i][j]=f[i-1][j]+f[i-1][j-1]+1

0 条评论

目前还没有评论...