给定一组字符和长度的排列
Permutations given a set of characters and length
这里的初学者程序员,只是想知道是否有更简单的方法来排列给定的字符集和用户给定的长度。 例如,长度为 3 的 A,B 将是:AAA、ABA、ABB、AAB、BBB、BAB、BAA。
此输出对应于整数 0..7(000,001、010 等)的二进制表示,因此您可以只制作最多2^N-1
的 for 循环,用二进制表示循环计数器并用字符替换零和一。
对于较大的字符集(大小为M
)也是如此 - 但您必须在M
元系统中表示值0..M^N - 1
(使用整数除法和余数)。伪代码:
for i = 0 to Power(M, N) - 1 do
// represent i in M-ary system:
tmp = i
for k = 0 to N - 1 do
digit[k] = tmp % M //integer modulo
tmp = tmp / M //integer division
替代实现 - 使用旧电动计数器轮等方法遍历所有m^n
值。蟒蛇演示代码:
src = "abc";
M = len(src)
N = 2
l = [0]*N
i = 0
while i < N:
print([src[x] for x in l])
i = 0
l[i] += 1
while (i < N) and l[i] >= M:
l[i] = 0
i += 1
if i < N:
l[i] += 1
相关文章:
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- C++字符*缓冲区的大小
- HEX值到wchar_t字符(UTF-8)的转换
- 为什么 Serial.println(<char[]>);返回随机字符?
- 在 CPP 中打印具有重复项的选定长度字符的所有排列
- 给定字符的排列算法,具有条件C++的重复
- 如何用单词排列向量中的每个字符升序?
- 有没有办法在不使用任何迭代的情况下将字符的字母顺序排列
- 如何找到通过仅移动相邻字符创建的字符串的排列?-C++
- 取消随机排列整数/字符数组
- 给定一组字符和长度的排列
- 打印可以由一组n个字符组成的长度为k的所有排列
- 当相应字符不在同一位置时,字符串的所有排列
- 字符的递归排列生成器
- 使用算术记数法横向排列一串字符
- 如何排列打印字符
- 如何生成具有重复字符的排列
- 在特定排列中连接字符串的字符
- 通过重新排列字符找到字符串中的所有回文子字符串
- 数组中字符的排列