打印m值为-1且n-m为1的所有数组

时间:2016-06-05 18:00:00

标签: python algorithm

给定元素数n和m我必须打印所有不同的数组,其中m个值为-1,n-m值为1.

1 个答案:

答案 0 :(得分:1)

你必须使用递归,但我希望它有所帮助。你确保你在你的数组中向你的级别向下和向你的每个级别添加+1,或者如果你仍然没有使用你的所有m -1,则确保-1。

最后你打印出你已经获得的数组(向量),只要它中有n个数字并且你已经使用了正确的m -1' s。 left-overall显示总计剩余元素的数量。 left-negative显示你还可以添加多少-1。

def rec(left_overall, left_negative, v = []):
    if left_overall == 0 and left_negative == 0:
        for i in range(0, len(v)):
            print(v[i], end=" ")

        print()
        return

    if left_overall == 0:
        return

    v.append(1)
    rec(left_overall - 1, left_negative, v)
    v.pop()

    if left_negative > 0:
        v.append(-1)
        rec(left_overall - 1, left_negative - 1, v)
        v.pop()
    return

n = 5
m = 2

arr = []
rec(n, m, arr)