zoukankan      html  css  js  c++  java
  • Egg Dropping Puzzle问题的分析

    首先,基本问题是这样:You are given two eggs, and access to a 100-storey building. The aim is to find out the highest floor from which an egg will not break when dropped out of a window from that floor.

    翻译成中文大概是这样:你得到两个鸡蛋,并进入一个100层楼。目的是找出从地板上掉下来的鸡蛋从地板上掉下来时不会破裂的最高层。

    我谷歌了一下这个题目,发现应该是和动态规划相关的问题,应该有优化的过程。

    我们可以用w(n,k)来表示,其中n表示鸡蛋的个数,k表示楼需要验证的层数。题目则用(2,100)来表示,假设第一次在第i个楼层扔鸡蛋,如果破碎了,则下一个鸡蛋从(1,i)的范围,所对应的公式为(1,i-1);如果没有碎,则这两个鸡蛋则从(i,100)的范围进行实验,所对应的公式为w(2,100-i)。

    其对于的公式为

           w(n,k)=1+max{w(n-1,i-1),w(n,k-i)}

    其中w(1,1)到w(1,k)=k,w(n,1)=1,w(1,0)=0.

    代码如下:

    #include<iostream>
    #include<stdio.h>
    #include<math.h>
    #define MAX 200
    #define MAXMAX 10000
    using namespace std;
    int main()
    {
        int w[MAX][MAX]={0};
        int n,k;
        cin>>n>>k;
        for(int i=0;i<=k;i++)
        {
            w[1][i]=i;
        }
        for(int i=0;i<=n;i++)
        {
            w[i][1]=1;
        }
    
        int t;
         for(int i=2;i<=n;i++)
         {
             for(int j=2;j<=k;j++)
             {
                 int the_max=MAXMAX;
                 for(int x=1;x<=j;x++)
                 {
                     t=max(w[i-1][x-1],w[i][j-x]);
                     if(the_max>t)
                     {
                         the_max=t;
                     }
                 }
                w[i][j]=1+the_max;
    
            }
         }
    
         //cout<<w[n][k]<<endl;
         for(int j=0;j<=k;j++)
         {
             printf("%4d",j);
         }
         cout<<endl;
         for(int i=1;i<=n;i++)
         {
             printf("%4d",i);
             for(int j=1;j<=k;j++)
             {
                  printf("%4d",w[i][j]);
             }
             cout<<endl;
    
         }
        return 0;
    }

    以w(2,36)为例,运行截图如下:

    运行w(2,100)即可得到题目所求。

  • 相关阅读:
    分析ARP攻击与欺骗
    IP数据包结构
    OSI 7层模型
    PKI
    求一个字符串所有的子序列:非递归和递归算法
    空当接龙求解:java版广度优先
    mysql 解决奇葩问题续篇。
    mysql 的一个奇葩问题
    symfony 之 admin 征途二 数据库相关
    symfony 之 admin 征途一 试运行
  • 原文地址:https://www.cnblogs.com/CMlhc/p/9043763.html
Copyright © 2011-2022 走看看