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

Posted Better Bench

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode刷题Python滑雪路径消耗时间:Testing Round #16 (Unrated) C. Skier相关的知识,希望对你有一定的参考价值。

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)

以上是关于Leetcode刷题Python滑雪路径消耗时间:Testing Round #16 (Unrated) C. Skier的主要内容,如果未能解决你的问题,请参考以下文章

Leetcode刷题Python64. 最小路径和

Leetcode刷题Python62. 不同路径

Leetcode刷题Python1496.判断路径是否相交

Leetcode刷题Python63. 不同路径 II

Leetcode刷题Python257. 二叉树的所有路径

Leetcode刷题Python120. 三角形最小路径和