输入一个字符串,打印出字符串的多有排列, 例如输入字符串 abc 则打印出字符有a,b,c所有能排列出来的所有字符串abc/acb/bac/bca/cba/cab
#include "stdafx.h"
#include <stdlib.h>
void Permutation(char * pStr, char* pBegin);
int g_Nnumber = 0;
void Permutation(char * pStr)
{
if(pStr == NULL)
return;
Permutation(pStr, pStr);
}
void Permutation(char *pStr, char *pBegin)
{
if (*pBegin == '\0')
{
printf("%s\n", pStr);
}
else
{
for (char *pCh = pBegin; *pCh != '\0'; ++pCh)
{
char temp = *pCh;
*pCh = *pBegin;
*pBegin = temp;
printf("%d: %s %s %s\n", ++g_Nnumber, pStr, pBegin, pCh);
Permutation(pStr, pBegin + 1);
printf("*****************: %s %s %s\n", pStr, pBegin, pCh);
temp = *pCh;
*pCh = *pBegin;
*pBegin = temp;
printf("*****************: %s\n", pStr);
}
}
}
void Test(char *pStr)
{
if (pStr == NULL)
{
printf("Test for NUll begins:\n");
}
else
{
printf("Test for %s begins:\n", pStr);
}
Permutation(pStr);
}
int _tmain(int argc, _TCHAR* argv[])
{
//Test(NULL);
//char *str1 = "";
//Test(str1);
char str2[] = "abc";
Test(str2);
system("pause");
return 0;
}