我需要对这个问题(https://uchicago.kattis.com/problems/uchicago.shortmanhattan)有所了解。我列出了我在下面写的代码。我知道它看起来很糟糕,但到现在为止我可以到达目前为止。我只想介绍一下我在想这个问题。
def permunation_xy(x_move, y_move):
if len(x_move) == 0 and len(y_move) >= 1:
return y_move
elif len(y_move) == 0 and len(x_move) >= 1:
return x_move
elif len(x_move) == 0 and len(y_move) == 0:
return []
else:
[x_move[-1]] + permunation_xy(x_move[:-1], y_move)
[y_move[-1]] + permunation_xy(x_move, y_move[:-1])
x0, y0, x1, y1 = map(int, input().split())
x_move = []
y_move = []
if x0 == x1 and y0 == y1:
print("NONE")
else:
Dx = x1 - x0
Dy = y1 - y0
if Dx > 0:
x_move = ["right"] * abs(Dx)
elif Dx < 0:
x_move = ["left"] * abs(Dx)
else:
x_move = []
if Dy > 0:
y_move = ["up"] * abs(Dy)
elif Dy < 0:
y_move = ["down"] * abs(Dy)
else:
y_move =[]
print(" ".join(permunation_xy(x_move, y_move)))
在这个问题中,我应该如何构建递归过程?如何处理多输出?我认为这个问题看起来像构建简单的二叉树?
除了这个问题,我对递归编程感到非常沮丧,我不知道如何思考它们,不知道如何建立基本步骤和递归步骤。任何人都可以与我分享一些经验吗?谢谢!