对数组中元素进行全排列,并输出所有全排列结果:
/*data为待排列数组,first=0,end=data.size-1*/
void Permutate(int data[], int first, int end)
{
if(first==end)
{
/*输出一组全排列*/
for(int i=0; i<=first; i++)
{
cout<<data[i];
}
cout<<endl;
}
else
{
for(int i=first; i<=end; i++)
{
swap(data[i], data[first]); //每个元素与第一个元素交换
Permutate(data, first+1, end); //对剩余元素进行递归全排列
swap(data[i], data[first]); //将元素交换回来复原,然后交换下一个元素
}
}
}