题目描述:
假设有从 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-526 优美的排列所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)