我无法解决这个问题:
创建一个给定字符集 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/