algorithm - 根据位置计算组合

标签 algorithm function combinations

我无法解决这个问题:

创建一个给定字符集 C 的函数,可以生成第 N 个组合或返回给定起始位置 (Ns) 和结束位置 (Ne) 以及组合的最大长度 (Mx) 的系列组合。

一个具体的例子:

令 C = [A,B,C]

我们知道不同的组合看起来像下面假设 Mx = 3 (不同的长度组合会不同):

1. AAA
2. AAB
3. AAC
4. ABA
5. ABB
6. ABC
N. ... Etc

如果我们要传递以下参数:

C = [A,B,C] Mx = 3 Ns = 3 Ne = 3

我们希望得到以下结果:

AAC

如果我们要传递以下参数:

C = [A,B,C] Mx = 3 Ns = 4 Ne = 6

我们希望得到以下结果:

4. ABA
5. ABB
6. ABC

对于解决方案,编程语言是不相关的。但是 C# 将是首选。同样最重要的是解释它是如何解决的。

我期待 Stack Overflow 的神奇大师...

最佳答案

给定 N(从 0 开始)到 n 符号组合序列中的索引,您可以得到第 i 个符号通过计算 N/ni % n (使用整数除法和余数)

例如:

C = {A, B, C} (giving n = 3)
N = 6
i = 0 => 6 / 3^0 % 3 = 0 (symbol 0 = A)
i = 1 => 6 / 3^1 % 3 = 2 (symbol 2 = C)
i = 2 => 6 / 3^2 % 3 = 0 (symbol 0 = A)
Resulting sequence: ACA

序列被视为基数-n,并计算各个数字。

关于algorithm - 根据位置计算组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5052688/

相关文章:

c# - 从 DateTime 列表中找到常见的 DateTime,如果不常见则找到最常见的

javascript - 命名匿名函数与匿名函数

c - 为什么数组参数的大小与 main 中的大小不同?

php - 使用函数来简化 CMS 主题

javascript - 找出一定范围内N个不重复数的所有可能组合,加起来等于X

R——比较计算的相关性

algorithm - 计算递归算法的复杂度

python - 角度的加权平均值

像 Bellman-Ford 这样的算法,只适用于多起点、单一目的地?

php - 获取符合特定范围条件的可能组合(大小为 N)