Как получить все перестановки массива строк в C - PullRequest
0 голосов
/ 01 февраля 2020

Я пытаюсь создать программу на C для создания массива всех перестановок набора строк. Я нашел некоторый код здесь, чтобы сделать это , но это с символами в строке, а не массивом строк. Вот моя отредактированная версия кода:

#include <stdio.h>
int main() {
        char a[7][7] = {
                        "string1",
                        "string2",
                        "string3",
                        "string4",
                        "string5",
                        "string6",
                        "string7"
                        };
        int i, j;
        int f=5040;         //factorial
        char c[10];          //buffer
          while (f--) {
            printf("%s\n", a);
            i=1;
            while(a[i] > a[i-1]) i++;
                j=0;
                while(a[j] < a[i])j++;
                    strcpy(c,a[j]);
                    strcpy(a[j],a[i]);
                    strcpy(a[i],c);
                i--;
                for (j = 0; j < i; i--, j++) {
                    strcpy(c,a[i]);
                    strcpy(a[i],a[j]);
                    strcpy(a[j],c);
                }
        }
}

Я должен был перейти от таких вещей, как [j] = a [i] к strcpy (a [j], a [i]), так как я Копирую строку, а не один символ. В любом случае, когда я запускаю эту программу неотредактированной (см. Ссылку), она работает нормально, но когда я запускаю приведенный выше код, все, что он делает, это печатает «string1» один раз и затем завершает работу. Я не могу понять, почему - что мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...