您当前的位置: 首页 >  Python

Better Bench

暂无认证

  • 0浏览

    0关注

    695博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

【Leetcode刷题Python】滑雪路径消耗时间:Testing Round #16 (Unrated) C. Skier

Better Bench 发布时间:2022-09-29 15:59:46 ,浏览量:0

1 题目

在知能科技公司的笔试题中,出现过

题意: 给一个字符串,N,S,W,E,分别代表上下左右。当走过一个没有走过的边时,花费5秒,如果走过这个边,则花费1秒。(注意:判断的是两点之间的距离,不是单纯的点).给你他的行动轨迹,求消耗的时间。

例子1

NNN 15

例子2

NS 6

例子3

WWEN 16

例子4

WWEE 12

例子5

NWNWS 25 来自题目:Testing Round #16 (Unrated) C. Skier

2 解析

将每条路径的两个端点坐标存储起来,使用元组来存储两个坐标,注意一条线段的两个坐标是有两个方向。

3 python实现
direction = {
    'N':(0,1),
    'S':(0,-1),
    'E':(-1,0),
    'W':(1,0)

}
x,y= 0,0
ans = 0
# path = 'WWEN' # 输出16
path = input()
# path ='NWNWS' # 输出25
# x1,y1线段的当前坐标,x,y表示线段的另一个坐标。
visit = set([(0,0,0,0)])
for p in path:
    dx,dy = direction[p]
    x1,y1 = x+dx,y+dy

    if (x1,y1,x,y) in visit or (x,y,x1,y1) in visit:
        ans +=1
    else:
        ans+=5
    # 存储线段,线段的两个坐标,两个方向都要存储
    visit.add((x1,y1,x,y))
    visit.add((x,y,x1,y1))
    x,y =x1,y1 
print(ans)
关注
打赏
1665674626
查看更多评论
立即登录/注册

微信扫码登录

0.0765s