这个题目,今天看了好久,也算是终于把它搞定了,特此记录!!!
就像排列组合一样,将数组元素所有可能的结果全部排列,并显示出来。
今天说一个特别 有逼格的 方法: 递归实现全排列
void Perm(int* arr, int size, int n)
{
if (n == size-1)
{
for (int index = 0; index < size; ++index)
{
std::cout << arr[index] << " ";
}
std::cout << std::endl;
}
else
{
for (int index = n; index < size; ++index)
{
std::swap(arr[index], arr[n]);
Perm(arr, size, n + 1);
std::swap(arr[index], arr[n]);
}
}
}
测试函数:
int main()
{
int arr[] = { 1, 2, 3, 4, 5 };
Perm(arr,5,2);
return 0;
}
那么我今天就好好剖析下:
首先提示:
其次,对这个循环的具体流程做一个详细的程序流程图
以后再有新的理解,还会继续添加,希望其他同学,一起探讨