一起挑战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



目录
相关文章
|
定位技术
一起挑战pythontip的题目(22)
一起挑战pythontip的题目(22)
81 0
|
Python
一起挑战pythontip的题目(1)
一起挑战pythontip的题目(1)
115 0
|
Python
一起挑战pythontip的题目(27)
一起挑战pythontip的题目(27)
89 0
|
Python
一起挑战pythontip的题目(34)
一起挑战pythontip的题目(34)
94 0
|
存储 Python
一起挑战pythontip的题目(25)
一起挑战pythontip的题目(25)
85 0
一起挑战pythontip的题目(35)
一起挑战pythontip的题目(35)
94 0
|
存储
一起挑战pythontip的题目(33)
一起挑战pythontip的题目(33)
141 0
一起挑战pythontip的题目(8)
一起挑战pythontip的题目(8)
73 0
|
数据安全/隐私保护
一起挑战pythontip的题目(7)
一起挑战pythontip的题目(7)
82 0
|
Python
一起挑战pythontip的题目(21)
一起挑战pythontip的题目(21)
81 0