//函数功能 : 求一个字符串某个区间内字符的全排列
//函数参数 : pStr为字符串,begin和end表示区间
//返回值 : 无
void Permutation_Solution1(char *pStr, int begin, int end)
{
char tmp_char;
if(begin == end - 1) //只剩一个元素
{
for(int i = 0; i < end; i++) //打印
std::cout<<pStr[i];
std::cout<<std::endl;
}
else
{
for(int k = begin; k < end; k++)
{
std::swap(pStr[k], pStr[begin]); //交换两个字符
Permutation_Solution1(pStr, begin + 1, end);
std::swap(pStr[k],pStr[begin]); //恢复
}
}
}
void main(void)
{
char* pStr = "abcd";
int nstr_len = std::strlen(pStr);
Permutation_Solution1(pStr, 0, nstr_len);
}
改程序会爆掉,哪里出错了。