gpt4 book ai didi

c - 将字符串的所有可能排列存储在数组中?

转载 作者:行者123 更新时间:2023-11-30 17:25:16 25 4
gpt4 key购买 nike

我想将字符串的所有排列存储在字符串数组中...

现在我使用的代码是:

# include <stdio.h>


char *pms[] = {};
int pmsi = 0;
void swap (char *x, char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}

void permute(char *a, int i, int n)
{
int j;
if (i == n) {
pms[pmsi] = a;
pmsi++;
}
else
{
for (j = i; j <= n; j++)
{
swap((a+i), (a+j));
permute(a, i+1, n);
swap((a+i), (a+j)); //backtrack
}
}
}

/* Driver program to test above functions */
int main()
{
char a[] = "ABC";
permute(a, 0, 2);
int i;
for (i = 0 ; i < pmsi ; i++) {
printf("%s",pms[i]);
}
return 0;
}

但是这会崩溃......

我不想打印出所有可能的排列...我想将它们存储在一个数组中。

有什么解决办法吗?

最佳答案

我能够解决这个问题。

# include <stdio.h>


char *pms[];
int pmsi = 0;
void swap (char *x, char *y)
{
char temp;
temp = *x;
*x = *y;
*y = temp;
}

void permute(char *a, int i, int n)
{
int j;
if (i == n) {
pms[pmsi] = a;
pmsi++;
}
else
{
for (j = i; j <= n; j++)
{
swap((a+i), (a+j));
permute(a, i+1, n);
swap((a+i), (a+j)); //backtrack
}
}
}

/* Driver program to test above functions */
int main()
{
char a[] = "ABC";
permute(a, 0, 2);
int i;
for (i = 0 ; i < pmsi ; i++) {
printf("%s",pms[i]);
}
return 0;
}

这有效

但是现在排列没有被打印..原始字符串被打印。有什么帮助吗???

关于c - 将字符串的所有可能排列存储在数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27089922/

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