OD 算法题 B卷【洞穴探险】

文章目录

洞穴探险

  • 探险过程中,记录器会不定期记录自身的坐标位置,在记录的间隙中也会记录其他数据。现在需要获取某个成员在探险过程中相对于探险队总部的最远的足迹位置;
  • 坐标的数据格式为(x,y),如(1,2)、(100,200),其中0<x,y<1000;同时存在非法坐标,如(01,1)(1,01)(0,100)属于非法坐标;
  • 探险总部的坐标为(0,0),某位置相对于总部的距离为: x 2 + y 2 x^2 + y^2 x2+y2;
  • 若两个坐标的相对总部的距离相同,则第一次达到的坐标为最远的足迹;
  • 若记录器记录的坐标都不合法,输出总部坐标(0,0);

输入描述:
字符串,表示记录的数据;
输出描述:
字符串,最远足迹的坐标

示例1
输入:
ferg(3,10)a13fdsf3(3,4)f2r3rfasf(5,10)
输出:
(5,10)

示例2
输入:
asfefaweawfaw(0,1)fe
输出:
(0,0)

python实现:

  • 简单的字符串处理

def is_valid(temp):
    x, y = temp.split(",")
    x = x.strip()[1:]
    y = y.strip()[:-1]
    if x.startswith('0') or y.startswith('0'):
        return None
    x = float(x)
    y = float(y)
    if  (not 0 < x < 1000) or (not 0 < y < 1000):
        return None

    return x * x + y * y


s = input().strip()
n = len(s)

# 记录当前最远的坐标
tgt_coord = ""
max_dist = -1

flag = False   # 标记括号的开始
temp = ""
for i in range(n):
    if s[i] == "(":
        flag = True
    elif s[i] == ")":
        temp += s[i]
        flag = False

        # 当前坐标有效时才计算距离
        valid_dist = is_valid(temp)
        if valid_dist is not None and valid_dist > max_dist:
            max_dist = valid_dist
            tgt_coord = temp

        temp = ""

    if flag:
        temp += s[i]


if tgt_coord:
    print(tgt_coord)
else:
    print("(0,0)")
    
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

laufing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值