leetcode-526 优美的排列

Posted curtisxiao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode-526 优美的排列相关的知识,希望对你有一定的参考价值。

leetcode-526 优美的排列

题目描述:

假设有从 1 到 N 的?N?个整数,如果从这?N?个数字中成功构造出一个数组,使得数组的第 i?位 (1 <= i <= N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第?i?位的数字能被?i?整除i 能被第 i 位上的数字整除现在给定一个整数 N,请问可以构造多少个优美的排列?

这道题和 leetcoder 1079活字印刷题一样

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

以上是关于leetcode-526 优美的排列的主要内容,如果未能解决你的问题,请参考以下文章

leetcode-优美的排列

LeetCode 0667. 优美的排列 II - 思维 + 构造

LeetCode 576. 出界的路径数(动规) / 526. 优美的排列(全排列,状压dp)

LeetCode 667 优美的排列II[数学] HERODING的LeetCode之路

LeetCode 667. 优美的排列 II Beautiful Arrangement II (Medium)

526. 优美的排列