一起挑战pythontip的题目(20)

简介: 一起挑战pythontip的题目(20)

第96题:Py的寻路系统


题目描述:Py是个没有方向感的人,经常在校园内迷路,所以他经常手里拿着一张地图。每天Py都在校园内转来转去,但是Py不是一个喜欢浪费时间的人,每次转悠的时候,他总想找到一条从起点到终点的最短路。现在这个任务就交给了你,希望你给Py设计一个查询系统,Py每次只需要输入起点和终点,你就要告诉Py这两点间的最短路的长度是多少。


现在给你两个整数n和m以及一个三元组列表L,n表示地图上路口的数目,m表示地图上小路的个数,

其中1 <= n <= 100,0 <= m < n(n-1)/2。


列表L由m个三元组构成,每个三元组[a, b, len]表示一条连接路口a和路口b的小路,小路长为len,路口的编号从1开始,即 1 <= a,b <= n,这里的路都是双向的,没有一条路是连接两个相同的路口。

现在Py想从s路口到t路口,请你输出s路口到t路口的最短路径的长度,若不可达,则输出-1.

例如:

n=3,m=3
L=[[1,2,1],[2,3,1],[1,3,1]]
s=1, t=2

则输出1,即从路口1到路口2的最短路径长度为1.示

例:输入:n = 3

m = 3

s = 1

t = 2

L = [[1, 2, 1], [2, 3, 1], [1, 3, 1]]

输出:1

============================================================

第97题:圆的面积


题目描述:给你两个圆,每个圆由三个参数表示,x,y,r, 其中(x,y)表示圆心坐标,r表示半径。

现在给你这两个圆的参数,x1, y1, r1; x2,y2,r2, 请你求出这两个圆相交部分的面积,保留小数点后三位数。


如:

x1=20.0,y1=30.0,r1=15.0,x2=40.0,y2=30.0,r2=30.0

则输出608.366。

示例:输入:x1 = 20.0

y1 = 30.0

r1 = 15.0

x2 = 40.0

y2 = 30.0

r2 = 30.0

输出:608.366

============================================================

第98题:寻找临界楼层


题目描述:你是国际民用压缩技术公司(International Civil Pack-technical Company, ICPC)的产品测试员。


现在你有一项任务:测试包有特殊缓冲材料的玻璃围棋子的牢固度。


如果围棋子从某个足够高的楼层落下来就会碎,但如果没有碎,缓冲材料会自动修复损伤部分,

也就是说如果从6楼落下来不碎,从6楼把同一颗棋子丢1000次,它都不会碎(当然在现实中,围棋子从手中多落下几次就会碎)。

我们定义一个临界楼层:围棋子从这个楼层或更高落下来会碎,且围棋子从任何比这个楼层低的楼层落下都不会碎。

如果棋子从1楼丢下来也碎了,临界楼层就是1。

你的任务就是利用你面前这座偶然发现的大厦,寻找手中这种围棋子的临界楼层。

当然,大厦不一定足够高,我们规定如果你从最高层丢棋子仍然没有摔碎棋子,还是算找到了临界楼层。


策略1:如果你只有1颗棋子,那你不得不从1楼开始尝试丢,如果没碎就到2楼丢,还没碎就到3楼丢……

直到棋子碎了,那你现在所在的楼层就是临界楼层(显然这是只用一颗棋子确保能发现临界楼层的唯一方法)。

策略2:你现在有两颗棋子,你可以从10楼开始试,每次上升10层,直到第1颗棋子碎了(比如在60楼);

然后用策略1,从51楼开始用第2颗棋子1层层试上去。这样,如果大厦共100层,你最多只要试20次就能找到这个临界楼层。


但是这不是最佳策略:最佳策略最多只要尝试14次(最佳策略指的是在最坏情况下能用最少次数测出临界楼层的策略)。


现在给出你面前的大厦的楼层数。请你构思出最佳测试策略,用你手中的两颗棋子最多测几次就能确保找到那个临界楼层?


(注意:正如刚才提到的,因为大厦不一定足够高,即使在100层的大厦里你从99层丢棋子没有摔碎,

也不能认定100层一定是临界层,而至少要到100层丢一次。当然,这一次无论棋子是否摔碎都算是找到了临界层)。


现在给你楼层的高度n,输出对于高度为n层的大厦而言测量临界楼层的最佳策略所需的最多次数。

如n=5, 则输出3.


示例:输入:n = 6

输出:3

============================================================

第99题:编辑距离


题目描述:设 A 和 B 是 2 个字符串。要用最少的字符操作将字符串 A 转换为字符串 B。

这里所说的字符操作包括


(1)删除一个字符;


(2)插入一个字符;


(3)将一个字符改为另一个字符。


将字符串 A 变换为字符串 B 所用的最少字符操作数称为字符串 A 到 B 的编辑距离,记为d(A,B)。

试设计一个有效算法,对任给的 2 个字符串 A 和 B,计算出它们的编辑距离 d(A,B)。

如:

A="fxpimu"

B="xwrs"

则输出5.

示例:输入:A = "fxpimu"

B = "xwrs"

输出:5

============================================================

第100题:计算GPA


题目描述:每门课程的成绩分为五个等级:A,B,C,D,F(注意没有E),它们分别代表可以获得4,3,2,1,0个绩点.


现在给你一个由大写字母构成的列表L,请你计算平均绩点,保留小数点后两位。

若L中包含非法成绩等级,则输出-1.

如:

L = ["A", "B", "C", "D", "F"]

则输出2.00

示例:输入:L = ["A", "B", "C", "D", "F"]

输出:2.00



目录
相关文章
|
算法 Java 索引
Byte Hex CRC计算笔记
Byte Hex CRC计算笔记
208 0
|
设计模式 编解码 C++
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用(一)
【ffmpeg 视频播放】深入探索:ffmpeg视频播放优化策略与设计模式的实践应用
391 0
|
SQL 数据安全/隐私保护
阿里云服务器怎么搭建sql server(即 MS SQL)?
本文从远程桌面连接,到SQL SERVER安装进行了系统介绍。购买前请先:领取阿里云幸运券,有很多优惠,下文中有领取链接。 购买建议多买几年,年数越多优惠越多。
10164 82
|
存储 关系型数据库 MySQL
MySQL数据库基础:约束
约束是对数据库表中字段施加的规则,确保数据的正确性、有效性和完整性。主要分为非空约束、唯一约束、默认约束、主键约束和外键约束。非空约束禁止字段值为null;唯一约束确保字段值唯一,允许null值重复;默认约束设定默认值;主键约束结合非空与唯一约束,并可设为自增型;外键约束则通过关联其他表的主键,保证数据一致性。检查约束确保字段值满足特定条件。
198 1
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解人工智能中的深度学习技术及其最新进展
深入理解人工智能中的深度学习技术及其最新进展
1213 33
|
11月前
|
算法 调度 UED
深入理解操作系统:进程管理与调度策略
操作系统作为计算机系统的核心,其进程管理和调度策略对于系统性能和用户体验至关重要。本文将通过直观的代码示例和浅显易懂的语言,带领读者了解操作系统如何有效管理进程以及常见的进程调度算法。我们将从进程的基本概念出发,逐步深入到进程状态、进程控制块(PCB)的作用,最后探讨不同的调度算法及其对系统性能的影响。无论您是初学者还是有一定基础的开发者,都能从中获得有价值的信息。
Threejs用切线实现模型沿着轨道行驶
这篇文章详细介绍了如何使用Three.js让一个模型沿着预定的曲线路径移动,并保持模型的方向始终沿着路径的切线方向,提供了实现这一效果的具体代码和步骤。
600 1
Threejs用切线实现模型沿着轨道行驶
|
11月前
|
安全 网络协议 Linux
Linux操作系统的内核升级与优化策略####
【10月更文挑战第29天】 本文深入探讨了Linux操作系统内核升级的重要性,并详细阐述了一系列优化策略,旨在帮助系统管理员和高级用户提升系统的稳定性、安全性和性能。通过实际案例分析,我们展示了如何安全有效地进行内核升级,以及如何利用调优技术充分发挥Linux系统的潜力。 ####
320 1
|
编解码
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe9 in position 3114: invalid continuation byte
UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe9 in position 3114: invalid continuation byte
150 0