dp = [[0, 0, 0, 0] for _ in range(1001)]
# 只有一个手机时测试n楼层时需要的测试次数
for i in range(1, 1001):dp[i][1] = i# 无论多少个手机  第一层所需要的测试次数永远是1
for i in range(len(dp[1])):dp[1][i] = 1
# print(dp[1][1], dp[1][2], dp[1][3])# print(dp)
# ind 还需要测试的楼层数量 cnt: 手机数量
for cnt in range(2, 4):  # 第二部手机 第三部手机# 只有一个手机时要测试ind个楼层所需要的 次数 ->  两个手机时要测试ind个楼层所需要的 次数#   两 个手机时要测试ind个楼层所需要的 次数 ->  三 个手机时要测试ind个楼层所需要的 次数for ind in range(2, 1001):  # 从第一层到第1000层# 第ind层cnt个手机需要的测试次数 =  第ind - 1层cnt个手机需要的测试次数 + 1dp[ind][cnt] = dp[ind - 1][cnt] + 1for k in range(2, ind + 1):  # 寻找第k层 使得第k层摔手机是测试ind层需要的 最少次数# 跳至第k层需要 1次    跳至k层之后最坏的情况需要的次数 max(dp[k-1][cnt-1], dp[ind-k][cnt])# max(dp[k-1][cnt-1], dp[ind-k][cnt]) 表示取差的情况(需要的测试次数最多)# min表示采取这两种策略中测试次数最小的dp[ind][cnt] = min(dp[ind][cnt], 1 + max(dp[k-1][cnt-1], dp[ind-k][cnt]))# ind-k会出现等于0的情况 0层需要的测试次数为0 生成数组时已定义# dp[k-1][cnt-1]: 在第k层测试坏了  楼层数测试范围缩小至[1, k-1]    剩余手机数量[cnt-1]# dp[ind-k][cnt]: 在第k层测试没坏  楼层数测试范围缩小至[K+1, ind]  剩余手机数量[cnt]# print(f'层数 {ind} 手机数量 {cnt} 需要测试次数:', dp[ind][cnt])print(dp[1000][3])

版本二

# coding=gbk
"""
为了减少测试次数,从每个厂家抽样3部手机参加测试。
某次测试的塔高为1000层,如果我们总是采用最佳策略,
在最坏的运气下最多需要测试多少次才能确定手机的耐摔指数呢?
"""dp = [[0, 0, 0] for _ in range(1001)]  # 0层需要测试0次
# 一个手机时测试i层的耐摔程度需要i次
for i in range(1, len(dp)):dp[i][0] = i
# 无论几个手机,测试第一层只需要1个手机
dp[1][0], dp[1][1], dp[1][2] = 1, 1, 1
# dp[layer][pho_num]代表有pho_num个手机测试layer层最差运气下需要的最少次数
for pho_num in range(1, 3):for layer in range(2, 1001):dp[layer][pho_num] = dp[layer - 1][pho_num] + 1  # 法一:在上一层的基础上增加一次测试次数for i in range(2, layer + 1):  # 发二:直接跳到第i层测试,加上后续测试次数即为总次数# dp[layer-1][pho_num-1]: 表示在第i层测试时手机碎了,剩余测试楼层数为layer-1,手机数量-1# dp[layer-i][pho_num]:表示在第i层测试手机时手机未碎,剩余测试楼层数layer-i,手机数pho_numf2 = 1 + max(dp[i - 1][pho_num - 1], dp[layer - i][pho_num])dp[layer][pho_num] = min(dp[layer][pho_num], f2)print(dp[1000][2])

摔手机 蓝桥 Python相关推荐

  1. 蓝桥杯练习——摔手机测试次数

    蓝桥杯练习--摔手机测试次数 问题 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试, 并且评定出一 ...

  2. 2018年第九届蓝桥杯B组第四题:摔手机题解

    摔手机 摔手机 动态规划  在蓝桥杯的时候遇到一次 当时没有做对  看了题解也没明白  如今再次遇到这个类似的题目 于是拿出来补补吧 摔手机题目如下: 星球的居民脾气不太好,但好在他们生气的时候唯一的 ...

  3. 算法技能树2-蓝桥杯-python实现测试次数(摔手机)-动态规划(DP)

    文章目录 1.题目描述 2.python解题 1.知识点总结 1.题目描述 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规 ...

  4. 【精品计划0】蓝桥杯 摔手机

    原题描述: x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上 ...

  5. 蓝桥杯——摔手机 动态规划

    题目描述 X 星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上 ...

  6. 蓝桥耐摔指数 JAVA暴解(摔手机)

    x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通. x ...

  7. 蓝桥杯真题 18省4-测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。 各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐

    问题描述 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市 ...

  8. 蓝桥杯 摔手机----耐摔指数

     原题: 标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来 ...

  9. 2018 第九届 蓝桥杯 JavaB组 摔手机(动态规划解决)

    x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来, 之后才允许上市流通. ...

最新文章

  1. OSPF分解试验部分-LAB7:NSSA区域
  2. esp32 python-ESP32及其开发板介绍
  3. pthread属性使用(转)
  4. 【转】MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
  5. Storm 03_Storm 架构设计
  6. eventfd(一)
  7. linux必备工具,Linux装机必备工具
  8. webstore安装过程 0913
  9. Java中ArrayList类的用法
  10. Hadoop的安装和使用
  11. 简谈二维码(QRcode)的C语言生成,在单片机平台的实现
  12. Visual Studio 2019上安装AnkhSVN2019
  13. SHA1摘要算法(带示例)
  14. 桌面端如何运行小程序?
  15. Word转pdf一个方法就可以完成~手机电脑都可以免费使用~办公必备
  16. 人人都能成为闪电网络节点:第6章安装lnd
  17. Python学习笔记(八)—切片(slicing)
  18. Shipping Grants
  19. Android修行手册 - 实现可折叠TextView,仅一个类复制即用
  20. CF924C Riverside Curio

热门文章

  1. 卡方独立性检验|卡方拟合性检验
  2. 很多人知道外包的种种不好,但还是选择去外包,这是为什么呢?
  3. 新疆高一计算机学业水平测试,2017年新疆高中学业水平考试科目
  4. linux中的批量删除和查找
  5. DirectX11_HLSL入门篇
  6. Java ThreadLocalRandom 伪随机数生成器的源码深度解析与应用
  7. java中import是什么意思_java中import关键字是什么意思
  8. python numpy 图片 pad 参数详解
  9. 八层高速PCB板叠层设计
  10. 火爆全网的 “蚂蚁牙黑” 特效 今天你也可以做。