加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

leetcode-526 优美的排列

发布时间:2020-12-20 12:48:14 所属栏目:Python 来源:网络整理
导读:leetcode-526 优美的排列 题目描述: 假设有从 1 到 N 的?N?个整数,如果从这?N?个数字中成功构造出一个数组,使得数组的第 i?位 (1 = i = N) 满足如下两个条件中的一个,我们就称这个数组为一个优美的排列。条件:第?i?位的数字能被?i?整除i 能被第 i 位上

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读