【发布时间】:2021-04-09 21:46:16
【问题描述】:
我正在尝试在 python 中为Leetcode Beautiful Arrangements 实现部分蛮力方法。在递归调用期间,我正在努力更新我的“counter”变量。
我尝试了多种使用全局变量并将其作为函数参数传递的方法,无论我做了什么,即使 if L == len( numbers) 条件满足。
class Solution:
def countArrangement(self, n: int) -> int:
def count_beautiful_arranges(N: int, counter):
numbers = [0]*N
# start index at 1
# loop creates the array of 1 to N for initial list
for i in range(1, N+1):
numbers[(i-1)] = i
# call recursive permutation function
permutation(numbers, 0, counter)
return counter
def permutation(numbers: list, L: int, counter):
# check each recursive call
#print(L)
#print(len(numbers))
if L == len(numbers):
counter = counter + 1
for j in range(L, len(numbers)):
swap(numbers, j, L)
if numbers[L] % (L+1) == 0 or (L+1) % numbers[L] == 0:
permutation(numbers, L+1, counter)
swap(numbers, j, L)
def swap(numbers: list, x: int, y: int):
#pythonic code
numbers[x], numbers[y] = numbers[y], numbers[x]
count_beautiful_arranges(n, 0)
【问题讨论】:
-
对于这个问题,使用
permutations方法会导致Time Exceed,它只是需要很长时间。 -
这是一个部分置换蛮力,它会通过测试,因为一旦违反其中一个条件它就会停止生成置换。
标签: python-3.x function recursion global