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;
}
Но это выходит из строя ...
Я не хочу распечатывать все возможные перестановки ... Я хочу сохранить их в массиве.
Любое исправление?
вы храните тот же адрес i.e из массива pms для всех элементов. вы должны создать память для хранения этих комбинаций и скопировать каждый комбинационный массив вместо назначения. – radar
Ознакомьтесь с разницей между массивами и указателями. Также прочитайте, как массив заполняется в общем и C- "string" s (с нулевым завершением 'char'-массивы) в частности (см.' Str * '-семейство funcitons на этом). – alk