gpt4 book ai didi

ruby - 有效地抓取一些符合条件的子集

转载 作者:数据小太阳 更新时间:2023-10-29 07:51:40 25 4
gpt4 key购买 nike

<分区>

给定一组来自​​ 1 的连续数字至 n ,我试图找到不包含连续数字的子集的数量。

例如,对于集合 [1, 2, 3] , 一些可能的子集是 [1, 2][1, 3] .前者不会被计算而后者会被计算,因为 1 和 3 不是连续的数字。

这是我的:

def f(n)
consecutives = Array(1..n)
stop = (n / 2.0).round
(1..stop).flat_map { |x|
consecutives.combination(x).select { |combo|
consecutive = false
combo.each_cons(2) do |l, r|
consecutive = l.next == r
break if consecutive
end
combo.length == 1 || !consecutive
}
}.size
end

它可以工作,但我需要它工作得更快,对于 n <= 75 不到 12 秒.如何优化此方法以便处理高 n值(value)观没有汗水?

我看了:

还有一些其他的。我似乎找不到答案。

建议的重复项是 Count the total number of subsets that don't have consecutive elements ,尽管这个问题与我在 Ruby 中要求进行此优化时略有不同,但我不希望我的答案中出现空子集。如果我最初发现了那个问题,这个问题会非常有帮助!但 SergGr 的答案正是我要找的。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com