您当前的位置: 首页 > 

IT之一小佬

暂无认证

  • 1浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

优美的排列

IT之一小佬 发布时间:2022-04-24 08:53:40 ,浏览量:1

假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组 perm(下标从 1 开始),只要满足下述条件 之一 ,该数组就是一个 优美的排列 :

  • perm[i] 能够被 i 整除
  • i 能够被 perm[i] 整除

给你一个整数 n ,返回可以构造的 优美排列 的 数量 。

示例 1:

输入:n = 2 输出:2 解释: 第 1 个优美的排列是 [1,2]:     - perm[1] = 1 能被 i = 1 整除     - perm[2] = 2 能被 i = 2 整除 第 2 个优美的排列是 [2,1]:     - perm[1] = 2 能被 i = 1 整除     - i = 2 能被 perm[2] = 1 整除

示例 2:

输入:n = 1 输出:1

示例代码:【回溯】

class Solution(object):
    def __init__(self):
        self.res = 0

    def countArrangement(self, n):
        self.dfs(n, [], 1)
        return self.res

    def dfs(self, n, path, index):
        if len(path) == n:
            print(path)
            self.res += 1
        for i in range(1, n + 1):
            if i in path:
                continue
            if i % index == 0 or index % i == 0:
                path.append(i)
                self.dfs(n, path, index + 1)
                path.pop()


obj = Solution()
ans = obj.countArrangement(4)
print(ans)

运行结果:

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0491s