gpt4 book ai didi

c# - 如何获得一组可复制元素的所有唯一 n 长组合?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:14:47 27 4
gpt4 key购买 nike

我发现许多解决方案提供了一个以所有可能顺序组合的集合元素,但它们都只在每个结果中使用每个元素一次,而我需要将它们视为可重用。

例如,如果输入元素为 {"a", "b", "c"} 并且数字为 2,则输出为 {"a", "a"}, {"a", "b"},{“a”,“c”},{“b”,“a”},{“b”,“b”},{“b”,“c”},{“c”,“a” }, {"c", "b"}, {"a", "c"}。

最佳答案

假设您有 N 个输入元素,并且您想要一个 K 长组合。

您需要做的就是以 N 为基数进行计数,当然,范围包括所有具有 K 位数字的数字。

所以,假设 N = {n0, n1, ... nN}

您将从数字 [n0 n0 ... n0] 开始,一直数到 [nN nN ... nN]

如果您想了解如何在另一个基数中计数,您可以得到 here

您计算的每个数字都映射到您需要的 K 长组合之一。

我认为一个例子会有所帮助

我会使用你的值(value)观。N = {a, b, c}所以我们想以 3 为基数进行计数。因为我们想要 2 长组合,所以我们只关心 2 位数字。最小的 2 位基数 3 是 00,所以我们从那里开始。通过以 3 为基数计数,我们得到:

00
01
02
10
11
12
20
21
22

好的,现在将这些数字转换成一个组合。

记住,我们的集合是{a, b, c}

因此,每当我们看到 0 时,就表示 1。无论我们在哪里看到 1,它都表示 2,我相信您可以猜到 2 表示什么:)

00              aa
01 ab
02 ac
10 0 => a ba
11 1 => b bb
12 2 => c bc
20 ca
21 cb
22 cc

关于c# - 如何获得一组可复制元素的所有唯一 n 长组合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17257692/

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