9.32 丢棋子问题

Posted latup

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9.32 丢棋子问题相关的知识,希望对你有一定的参考价值。

题目】:

  一座大楼有0~N层,地面算作第0层,最高的一层为第N层,已知棋子从第0层掉落肯定不会摔碎,从第i层掉落可能会摔碎,也可能不会摔碎(1<=i<=N),给定整数N作为楼层数,再给定整数K作为棋子数,返回如果想找到棋子不会摔碎的最高层数,即使在最差的情况下扔的最少次数。一次只能扔一个棋子

  举例:

    N=10,K=1

    返回10,因为只有1棵棋子,所以不得不从第1层开始一直试到第10层,在最差的情况下,即第10层是不会摔坏的最高层,最少也要扔10次

    N=3,K=2

    返回2,先在2层扔1棵棋子,如果碎了,试第1层,如果没碎,试第3层

    N=105,K=2

    返回14,

    第一个棋子先在14层扔,碎了则用仅存的一个棋子试1~13层

    若没碎,第一个棋子继续在27层扔,碎了则用仅存的一个棋子试15~26层

    若没碎,第一个棋子继续在39层扔,碎了则用仅存的一个棋子试28~38层

    若没碎,第一个棋子继续在50层扔,碎了则用仅存的一个棋子试40~49层

    若没碎,第一个棋子继续在60层扔,碎了则用仅存的一个棋子试51~59层

    若没碎,第一个棋子继续在69层扔,碎了则用仅存的一个棋子试61~68层

    若没碎,第一个棋子继续在77层扔,碎了则用仅存的一个棋子试70~76层

    若没碎,第一个棋子继续在84层扔,碎了则用仅存的一个棋子试78~83层

    若没碎,第一个棋子继续在90层扔,碎了则用仅存的一个棋子试85~89层

    若没碎,第一个棋子继续在95层扔,碎了则用仅存的一个棋子试91~94层

    若没碎,第一个棋子继续在99层扔,碎了则用仅存的一个棋子试96~98层

    若没碎,第一个棋子继续在102层扔,碎了则用仅存的一个棋子试100、101层

    若没碎,第一个棋子继续在104层扔,碎了则用仅存的一个棋子试103层

    若没碎,第一个棋子继续在105层扔,若到这一步还没碎,那么105便是结果

 

题目来源:左程云老师《程序员代码面试指南》

 

以上是关于9.32 丢棋子问题的主要内容,如果未能解决你的问题,请参考以下文章

[CQOI2011]放棋子

九宫格问题 A*

广度优先搜索解决八数码问题

在一列内求和

黑白棋子的移动(分治)

N-Queens 谜题,但包含所有棋子