字符串的排列 代码(C)
?
题目: 输入一个字符串, 打印出该字符串中字符的所有排列.
?
方法: 使用递归依次交换位置, 打印输出.
?
代码:
?
/*
* main.cpp
*
* Created on: 2014.6.12
* Author: Spike
*/
/*eclipse cdt, gcc 4.8.1*/
#include
void Permutation(char* pStr, char* pBegin);
void Permutation(char* pStr)
{
if(pStr == NULL)
return;
Permutation(pStr, pStr);
}
void Permutation(char* pStr, char* pBegin)
{
if(*pBegin == '')
{
printf(%s
, pStr);
}
else
{
for(char* pCh = pBegin; *pCh != ''; ++ pCh)
{
char temp = *pCh;
*pCh = *pBegin;
*pBegin = temp;
Permutation(pStr, pBegin + 1);
temp = *pCh;
*pCh = *pBegin;
*pBegin = temp;
}
}
}
void Test(char* pStr)
{
if(pStr == NULL)
printf(Test for NULL begins:
);
else
printf(Test for %s begins:
, pStr);
Permutation(pStr);
printf(
);
}
int main(void)
{
char str[] = abc;
Test(str);
return 0;
}
输出:
?
?
Test for abc begins:
abc
acb
bac
bca
cba
cab
?

?