gpt4 book ai didi

从数组中创建所有可能的单词

转载 作者:太空宇宙 更新时间:2023-11-04 04:20:18 25 4
gpt4 key购买 nike

我想创建一个递归函数,它将从一个数组(字典)中创建所有可能的单词澄清一下,我所说的单词是指字符串,例如“aab”在这种情况下是一个单词。

char letters[36] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'};

顺便说一句,我不想​​要无限多的单词,最大长度为 10。

到目前为止我有这段代码:

char letters[36] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9'};
char s[10]="";
s[9]='\0';
int l=0;
printf("test \n");
recur(s,letters,l);

递归函数:

int recur(char * mot , char * tab,int l){
printf("int : %i \n",l);
if(l<2) {

for (int i = 0; i < sizeof(tab); ++i) {
mot[l]=tab[i];
printf("%s \n",mot);
l=l+1;
recur(mot,tab,l);
}
}
else {
return 1;
}
}

但我没有任何问题从头开始。

编辑:

结果是这样的:

长度== 1

a
b
c
d
.
.
8
9

长度== 2

aa
ab
ac
.
c7
c8
.
.
99

另一个例子:cd7e对于长度 == 4

编辑

我将代码更改为:(测试所有字符串,最大长度 = 2)

int recur(char * mot , char * tab,int l){

if(l<2) {
for (int i = 0; i < 36; ++i) {
mot[l]=tab[i];
printf("%s \n",mot);
recur(mot,tab,l+1);
}

}
else{
return 1;
}
}

结果是

a aa ab ac ad ae af ag ah ai ....

我不知道为什么会跳过长度为 1 的字符串。

编辑

我试过 l<3这是结果:

a aa aaa aab aac aad aae ... a91 a92 a93 a94 a95 a96 a97 a98 a99 b99 ba9 baa bab bac bad bae baf bag bah bai baj bak bal bam ban ...

对于长度 < 3 ,它会跳过所有长度为 1,2 的字符串

最佳答案

修复:在每次递归后重置字符串定界符:

for (int i = 0; i < 36; ++i)
{
mot[l]=tab[i];
printf("%s \n",mot);
recur(mot,tab,l+1);
}
mot[l] = '\0';

实际情况是,您从一个空的 mot 开始数组:

mot = "\0\0\0..."

然后就是第一个递归深度:

mot = "a\0\0..."

第二个深度(l<2 条件的最终深度):

mot = "aa\0..."
...
mot = "a9\0..."

回到你得到的第一个深度:

mot = "b9\0..."

但你需要:

mot = "b\0\0..."

关于从数组中创建所有可能的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47526845/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com