字符串的无重复全排列

原创 2015年07月09日 16:58:49

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

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

含重复字符的字符串全排列算法(思路+分析)

从昨天到现在一直在回顾字符串的全排列算法,之前简单地复习了不含重复字符的字符串全排列,所以这次想彻底解决该算法。关于不含重复字符的字符串全排列比较简单,直接用递归思路解决即可,简单代码如下: tem...

《编程之法》1.3字符串的全排列,组合,重复排列,八皇后问题

题目描述:输入一个字符串,打印出该字符串中字符的所有排列,例如输入"abc",输出"abc","acb","bac","bca","cab","cba" 解法...

字符串的全排列问题(一)——无重复出现字符的排列

有一个很常见的问题:给定一个字符串:ABCDEFG, 那么这个字符串有多少种排列方式,编程求出其所有排列方式。 通常对于这种问题会想到递归的方法实现。对于一个没有重复字符出现的字符串,求该字符串的全...

字符串全排列——重复和非重复

字符串全排列 1. 题目     输入一个字符串,打印出该字符串中字符的所有排列。例如:输入abc, 我们就可以得到abc, acb, bac, bca, cab, cba。 这个题目主要有两种思路:...

重复元素全排列

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)