文字列の全配列を生成し,遡及法で実現できる.


文字列の全配列を生成し、遡及法で実現できます.具体的なコードは以下の通りです.

/*              */

#include "stdafx.h"

void perm(char a[], int t);
void swap(char a[], int i, int j); /*     a    i j       */

int _tmain(int argc, _TCHAR* argv[])
{
    char a[] = "ABC";

    perm(a, 0);

    system("pause");
    return 0;
}

void swap(char a[], int i, int j)
{
    char temp = a[i];
    a[i] = a[j];
    a[j] = temp;
}

void perm(char a[], int t)
{
    if (t == strlen(a)) { /*         */
        for (int i = 0; i < strlen(a); i ++) printf("%c ", a[i]);
        printf("
"); } else for (int i = t; i < strlen(a); i++) { swap(a, t, i); perm(a, t + 1); /* */ swap(a, t, i); /* */ } }