摔手机 蓝桥 Python
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相关推荐
- 蓝桥杯练习——摔手机测试次数
蓝桥杯练习--摔手机测试次数 问题 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试, 并且评定出一 ...
- 2018年第九届蓝桥杯B组第四题:摔手机题解
摔手机 摔手机 动态规划 在蓝桥杯的时候遇到一次 当时没有做对 看了题解也没明白 如今再次遇到这个类似的题目 于是拿出来补补吧 摔手机题目如下: 星球的居民脾气不太好,但好在他们生气的时候唯一的 ...
- 算法技能树2-蓝桥杯-python实现测试次数(摔手机)-动态规划(DP)
文章目录 1.题目描述 2.python解题 1.知识点总结 1.题目描述 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规 ...
- 【精品计划0】蓝桥杯 摔手机
原题描述: x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上 ...
- 蓝桥杯——摔手机 动态规划
题目描述 X 星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上 ...
- 蓝桥耐摔指数 JAVA暴解(摔手机)
x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通. x ...
- 蓝桥杯真题 18省4-测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。 各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐
问题描述 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市 ...
- 蓝桥杯 摔手机----耐摔指数
原题: 标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来 ...
- 2018 第九届 蓝桥杯 JavaB组 摔手机(动态规划解决)
x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来, 之后才允许上市流通. ...
最新文章
- OSPF分解试验部分-LAB7:NSSA区域
- esp32 python-ESP32及其开发板介绍
- pthread属性使用(转)
- 【转】MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
- Storm 03_Storm 架构设计
- eventfd(一)
- linux必备工具,Linux装机必备工具
- webstore安装过程 0913
- Java中ArrayList类的用法
- Hadoop的安装和使用
- 简谈二维码(QRcode)的C语言生成,在单片机平台的实现
- Visual Studio 2019上安装AnkhSVN2019
- SHA1摘要算法(带示例)
- 桌面端如何运行小程序?
- Word转pdf一个方法就可以完成~手机电脑都可以免费使用~办公必备
- 人人都能成为闪电网络节点:第6章安装lnd
- Python学习笔记(八)—切片(slicing)
- Shipping Grants
- Android修行手册 - 实现可折叠TextView,仅一个类复制即用
- CF924C Riverside Curio