小编典典

根据位置计算组合

algorithm

我无法解决此问题:

创建一个给定字符集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#是首选。同样最重要的是如何解决它的解释。

我期待令人惊叹的Guru的堆栈溢出…


阅读 237

收藏
2020-07-28

共1个答案

小编典典

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

例如:

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 为底的数字,并计算出各个数字。

2020-07-28