假设我有一个包含单个字符的任意大小的数组.我想计算这些字符的所有可能组合,直到任意长度.
所以我要说我的数组是[1,2,3].用户指定的长度为2.然后可能的组合为[11,22,33,12,13,23,21,31,32].
我很难找到一个允许任意长度的合适算法,而不仅仅是排列数组.哦,虽然速度并非绝对关键,但它也应该相当快.
我需要一个计数器algortihm,它使用任意给定的数字进行计数.
我的代码与此类似:
static char digits[] = {'x','y','z'}; /* Arbitrary number of arbitrary digits. */
int i;
for(i=0; i<100; i++) {
printf("%s\n", get_next());
}
Run Code Online (Sandbox Code Playgroud)
我的预期产量:
x
y
z
yx
yy
yz
zx
zy
zz
yxx
yxy
yxz
yyx
yyy
yyz
yzx
yzy
yzz
zxx
... and so on
Run Code Online (Sandbox Code Playgroud)
如你所见,我需要算法来实现get_next()函数,所以使用C语言不是重点.
编辑我以澄清目的:
我的get_next()函数可能与此类似:
char get_next() {
static previous = digits[0];
char *next_number;
/* do something here using previous and digits[] */
return next_number;
}
Run Code Online (Sandbox Code Playgroud)
请注意,使用get_next(void)或 …