关闭

字符串的无重复全排列

标签: 字符串
287人阅读 评论(0) 收藏 举报
分类:

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);
        }
    }
}

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:15521次
    • 积分:798
    • 等级:
    • 排名:千里之外
    • 原创:67篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条