我自己尝试编码并且非常失败。这基本上就是我想要的:
a
b
...
z
aa
ba
...
za
ab
bb
...
zz
aaa
baa
...
zzz
最后它应该生成每个字符串,该字符串比字符集a-z短N个字符。所以我不是在寻找排列(其中1001个实现可以在互联网上找到),但是对于与替换的组合(至少在Python中调用它的方式) 。 订单并不重要,速度是。
答案 0 :(得分:9)
看起来你想要它在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);
}
答案 1 :(得分:3)
像这样(伪代码):
void CompWithRep(string line,int N) {
char c;
if (N==0) return;
for (c = 'a' ; c <= 'z' ; c++ )
{
printf(line + c);
CompWithRep(line + c,N-1);
}
}