广东湘恒智能科技有限公司
主营产品: 西门子PLC,西门子模块,西门子触摸屏,西门子变频器,西门子伺服电机驱动,电缆,西门子全系列
西门子PLC维修|西门子变频器代理商华南区

1 | 题目

图片



有K个鸡蛋喝一栋N层高的楼,存在一个临界楼层F,当鸡蛋从F层或更低的楼层掉落的话,鸡蛋都不会碎裂;反之,当鸡蛋从高于F层的楼层掉落时,鸡蛋就会碎裂,求最小需要几次试验才能够找出临界层F。



2 | 设计分析

图片



显然,如果只有一个鸡蛋,那么有几层楼就必须做几次试验才能够确保找出临界层F;而如果只有一层楼,那么无论手上有多少鸡蛋,所需要进行的试验次数都是一次;其它情况则考察每一次操作从第i层掉落的情况,如果没有碎,那么只需要考察楼上的第n-i层即可;反之,如果碎了,那么只要考察在k-1个鸡蛋的情况下对i-1个楼层需要多少次试验才能够确保获得临界层。

得到如下递推公式:

drops[k][n]=drops[k][n-1]+drops[k-1][n-1]+1

k表示有k个蛋,n表示最多经过n次操作,drops[k][n]表示当有k个蛋时,经过最少n次操作可以确保找出多少楼以下的临界楼层。



3 | 创建功能或功能块

图片



创建功能块FB,命名为“EggDrop”。




4 | 定义接口变量

图片



具体接口变量定义见下图:

图片

定义整型数变量result:输出计算结果;

定义整型数二维数组变量statDrops:存储尝试的过程值;

定义整型数常量E_N:鸡蛋数;

定义整型数常量F_N:楼层数。



5 | 程序代码

图片



编写程序代码。如下图:

图片

以上算法并非最优算法,感兴趣的炮友儿可以进一步优化。



6 | 代码测试

图片



在循环OB中调用FB-“EggDrop”,调用时会自动创建背景数据块,命名为“InstEggDrop”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:

图片给定3个鸡蛋14层楼的情况下,最少需要4次试验。




展开全文
相关产品
拨打电话 微信咨询 发送询价