实现代码:
void Permutation(char* pInitData, char* pCurData)
{
if ('\0' == *pCurData) // 已经处理完毕
{
std::cout << pInitData << std::endl;
return;
}
for (char* pData = pCurData; *pData != '\0'; ++pData)
{
std::swap(*pCurData, *pData);
Permutation(pInitData, pCurData + 1); // 注意这里传入的参数为pCurData + 1而不是++pcurData
std::swap(*pCurData, *pData); // 还原回去
}
}
void Permutation(char* pData)
{
if (nullptr == pData) return;
Permutation(pData, pData);
}