leetcode-526 优美的排列
leetcode-526 优美的排列
题目描述:
假设有从 1 到 N 的 N 个整数,如果从这 N 个数字中成功构造出一个数组,使得数组的第 i 位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第 i 位的数字能被 i 整除i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列?
class Solution:
def countArrangement(self, N: int) -> int:
flags = [0]*(N+1)
self.res = 0
self.dfs(list(range(N+1)),1,flags)
return self.res
def dfs(self,nums,index,flags):
if len(nums) < index+1:
self.res += 1
return
for i in range(1,len(nums)):
if flags[i]==0 and (index%i == 0 or i%index == 0):
flags[i] = 1
self.dfs(nums,index+1,flags)
flags[i] = 0