我自己尝试编码,但失败了。这基本上是我想要的:
a b ... z aa ba ... za ab bb ... zz aaa baa ... zzz
最后,它应该生成的每个字符串都短于N个字符,且字符集为az。因此,我不是在寻找 排列 (可以在Internet上找到1001个实现),而是寻找 与替换的组合 (至少在Python中是这样称呼的)。 顺序并不重要 ,速度 至关重要 。
看起来您想要用C语言编写,这是一种实现方法:
#include <stdlib.h> #include <stdio.h> int inc(char *c){ if(c[0]==0) return 0; if(c[0]=='z'){ c[0]='a'; return inc(c+sizeof(char)); } c[0]++; return 1; } int main(void){ int n = 3; int i,j; char *c = malloc((n+1)*sizeof(char)); for(i=1;i<=n;i++){ for(j=0;j<i;j++) c[j]='a'; c[i]=0; do { printf("%s\n",c); } while(inc(c)); } free(c); }