- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个长度为 n 的 A 数组。我想采取所有可能的 k (0
例如,如果我有 A 的长度是五:
[1,2,3,4,5]
如果 k = 3,算法必须给我 B 数组。
[1,2,3 ]
[1,2, 4 ]
[1,2, 5]
[1, 3,4 ]
[1, 3, 5]
[1, 4,5]
[ 2,3,4 ]
[ 2,3, 5]
[ 2, 4,5]
[ 3,4,5]
B 的长度等于 n!/k!(n-k)!
('!' 表示阶乘,牛顿法)
我使用的是 javascript,所以在我的标签中包含了它,但这只是算法,不需要用 javascript 编写。
最佳答案
您可以通过过滤方法来做到这一点。
在您的示例中,您希望接收数组的所有排列,并获取该数组的特定数量的元素。
您可以轻松地以迭代方式做到这一点。首先对数组的 n - 1
元素进行所有排列:
// return all (n - 1) element permutations of an array
var permutations = function(arr) {
return arr.reduce(function(re, value, i) {
// add an array for each element in the original array
return re.concat([arr.filter(function(v, index) {
// drop each element with the same index
return index !== i
})])
}, [])
}
现在 permutations([1,2,3])
将返回 [[1,2], [1,3], [2,3]]
这始终是一个不相交的集合,假设您在源数组中只有唯一值。
要接收 5 元素数组的所有 3 元素数组,您首先要计算 4 元素数组的列表,并将它们中的每一个转换为 3 元素数组。
permutations([1,2,3,4]).map(permutations)
=> [[1,2,3] => [[[1,2], [1,3], [2,3]]
,[1,2,4] ,[[1,2], [1,4], [2,4]]
,[1,3,4] ,[[1,3], [1,4], [3,4]]
,[2,3,4] ,[[2,3], [2,4], [3,4]]
] ]
显然这里的问题是有 double 。这可以通过删除所有非唯一值来解决。
var unique = function(arr) {
var s = arr.map(function(v) { return "" + v })
return arr.filter(function(v, i) { return s.indexOf("" + v) == i })
}
将它们全部打包到一个函数中可以像这样完成:
var permutationsWithLength = function(arr, length) {
var re = [arr]
for (var i = arr.length; i >= length; i--) {
re = re.reduce(function(tmp, perms) {
return unique(temp.concat(permutations(perms)))
}, [])
}
return re
}
我承认这可能不是最快的方法,尤其是关于 unique
函数,但它是一种非常通用的方法,即使使用更大的数组也能解决您描述的问题。
希望对你有帮助;)
关于javascript - 二项式子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15831883/
使用 glm 时,binomial、binomial() 和 'binomial' 之间有什么区别。它们并不相同,如以下代码所示: > library(MASS) > bwdf = birthwt[-
我一直在用我的(非 r-savvy)大脑来让 R 产生二项式 glmer 模型的正确预测的百分比。我知道这不是统计上的 super 信息,但经常被报道;所以我也想举报。 数据: 因变量:Tipo,它有
我一直在寻找一种方法来使数据符合 beta 二项分布并估计 alpha 和 beta,类似于 VGAM 库中的 vglm 包的方式。我一直无法找到如何在 python 中执行此操作。有一个 scipy
如何在 Julia 中提取一般线性模型中指定的数据分布?例如,下面我安装了一个玩具示例 Poisson GLM。我想从模型中提取一个字符串“Poisson”。同样,如果使用数据分布指定模型 = Bin
我是一名优秀的程序员,十分优秀!