标签:
#include "stdafx.h"
#include <iostream>
#include <assert.h>
using namespace std;
void permutation(char *pStr, char* pBegin)
{
assert(pStr&&pBegin);
if (*pBegin == ‘\0‘)
cout << pStr << endl;
else
{
for (char* pCh = pBegin; *pCh != ‘\0‘; ++pCh)
{
swap(*pBegin, *pCh);
permutation(pStr, pBegin + 1);
swap(*pBegin, *pCh);
}
}
}
int main()
{
char str[] = "abcd";
permutation(str, str);
}
swap
之后还需要再次swap
回来以恢复。a
开头,后面跟三个字符b
开头,后面跟三个字符c
开头,后面跟三个字符d
开头,后面跟三个字符 a
和后面的一个字符交换后,只需要再对后三个字符递归调用当前函数即可。*pBegin == ‘\0‘
。标签:
原文地址:http://blog.csdn.net/yapian8/article/details/46442847