【发布时间】:2016-08-23 14:47:30
【问题描述】:
我是 C 的初学者,我想从给定的字符串中重复所有可能的字符串(最大长度为 8)。我对指针有点绝望。我有这个代码(输入例如“abcd”):
void permute(char *str, char *p_ch, int length);
int main() {
input = malloc(8 * sizeof(char));
fgets(input, 11, stdin);
int n = strlen(input);
permute(NULL, NULL, n);
return 0;
}
void permute(char *str, char *p_ch, int len) {
if (str == NULL) {
char str[len];
*p_ch =&str[0];
permute(str, p_ch, len);
return;
}
if (strlen(str) != len) {
for (int i = 0; i < len; i++) {
*p_ch = input[i];
permute(str, (p_ch + 1), len);
}
}
else {
printf("%s", str);
}
}
所以我想要的输入是: AAAA AAAB AAAC AAAD 亚巴 AABB . . .etc
谁能告诉我哪里出错了?我使用java,这个算法运行良好,所以我只有不同语言的问题。非常感谢
【问题讨论】:
-
那些不是排列。你确定你完全理解这个问题吗?
-
它是什么?这是给定输入字符串@iharob的所有可能排列
-
所有可能的排列是
abcd、acdb、adcb...等等。不要重复字符。 -
对不起,我的错误,我想从给定的输入中重复所有可能的字符串
-
你需要先在纸上解决问题。这不是我想解决的问题。然而,看到解决方案会非常有趣。
标签: c string pointers recursion permutation