Рубрики

C Программа для печати всех перестановок данной строки

Перестановка, также называемая «номером расположения» или «порядком», представляет собой перестановку элементов упорядоченного списка S в соответствие один к одному с самим S. Строка длиной n имеет n! перестановка.
Источник: Mathword ( http://mathworld.wolfram.com/Permutation.html )

Ниже приведены перестановки строки ABC.
ABC ACB BAC BCA CBA CAB

// C программа для печати всех перестановок с разрешенными дубликатами
#include <stdio.h>
#include <string.h>

  
/ * Функция для обмена значениями в двух указателях * /

void swap(char* x, char* y)

{

    char temp;

    temp = *x;

    *x = *y;

    *y = temp;

}

  
/ * Функция для печати перестановок строки

   Эта функция принимает три параметра:

   1. Строка

   2. Начальный индекс строки

   3. Конечный индекс строки. * /

void permute(char* a, int l, int r)

{

    int i;

    if (l == r)

        printf("%s\n", a);

    else {

        for (i = l; i <= r; i++) {

            swap((a + l), (a + i));

            permute(a, l + 1, r);

            swap((a + l), (a + i)); // возвращение

        }

    }

}

  
/ * Программа драйвера для проверки вышеуказанных функций * /

int main()

{

    char str[] = "ABC";

    int n = strlen(str);

    permute(str, 0, n - 1);

    return 0;

}

Выход:

ABC
ACB
BAC
BCA
CBA
CAB

Пожалуйста, обратитесь к полной статье на Написать программу для печати всех перестановок данной строки для более подробной информации!

Рекомендуемые посты:

C Программа для печати всех перестановок данной строки

0.00 (0%) 0 votes