两组的排列递归

时间:2017-09-10 21:52:16

标签: python-3.x

我需要对这个问题(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)))

在这个问题中,我应该如何构建递归过程?如何处理多输出?我认为这个问题看起来像构建简单的二叉树?

除了这个问题,我对递归编程感到非常沮丧,我不知道如何思考它们,不知道如何建立基本步骤和递归步骤。任何人都可以与我分享一些经验吗?谢谢!

0 个答案:

没有答案