所有排列,直到n = x

问题描述 投票:-1回答:1

具有一个特定的整数(例如n = 3),我想要一个数组,其中每个元素都是直到n = 3为止的数字的可能排列之一。示例:

 n = 3, so numbers: [0,1,2]

 permutations: [(0),(1),(2), (0,1),(1,0),(0,2),...,(0,1,2),(0,2,1),(1,0,2),(1,2,0),...]

((这可能表示为Rust中的数组的数组)如何在Rust中实现?

arrays rust permutation
1个回答
0
投票

简短的回答涉及将对IterTools::combinations的调用合并。不过,会有一个警告-我们将需要返回一个拥有的结构,并且这排除了支持向量的切片。差异几乎可以忽略不计,您可以随时将它们切成薄片:

IterTools::combinations

user itertools::IterTools; let items = [1, 2, 3, 4]; let combinations = (1..=items.len()).fold(vec![], |mut state, to_take| { state.append(&mut items.iter().combinations(to_take).collect::<Vec<_>>()); state }); println!("{:?}", combinations) 方法本身非常容易实现,以防您不想负担combinations()中包含的(高级)实现。

© www.soinside.com 2019 - 2024. All rights reserved.