#define N 3
int a[N] = { 1, 2, 3 };
则打印出
1 2 3
1 3 2
2 1 3
2 3 1
3 2 1
3 1 2
1 2 3
程序的主要思路是:
-
把第1个数换到最前面来(本来就在最前面),准备打印1xx,再对后两个数2和3做全排列。
-
把第2个数换到最前面来,准备打印2xx,再对后两个数1和3做全排列。
-
把第3个数换到最前面来,准备打印3xx,再对后两个数1和2做全排列。
可见这是一个递归的过程,把对整个序列做全排列的问题归结为对它的子序列做全排列的问题,注意我没有描述Base Case怎么处理,你需要自己想。你的程序要具有通用性,如果改变了