创建一个给定字符集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的堆栈溢出…
给定 n个* 符号的组合序列中的索引 N (从0开始),您可以通过计算 N / n i % n (使用整数除法和余数)来获得第 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 为底的数字,并计算出各个数字。