using namespace std;
void function(char* pStr, char* pBegin);
bool IsSwap(char* pBegin, char* pEnd);
int main(void)
{
char str[] = "aabc";
function(str,str);
return 0;
}
//在[pBegin,pEnd]区间中是否有字符与下标为pEnd的字符相等
bool IsSwap(char* pBegin, char* pEnd)
{
char *p;
for (p = pBegin; p < pEnd; p++)
{
if (*p == *pEnd)
return false;
}
return true;
}
void function(char* pStr, char* pBegin)
{
if (*pBegin == '\0')
{
printf("%s\n",pStr);
}
else
{
for (char* pCh1 = pBegin; *pCh1 != '\0'; pCh1++)
{
if (IsSwap(pBegin, pCh1))
{
swap(*pBegin, *pCh1);
function(pStr, pBegin+1);
swap(*pBegin, *pCh1);
}
}
}
}