每一次递归结束之后生成一个全排列,且排列最初一定是有序的,结果也是
using namespace std;
int a[20] = { 1,2,3,4,5,6,7,8,9,10,11,12,13 };
bool vis[20]; //记录第i个数是否用过
int b[20]; //生成的一个全排列
void dfs(int s, int t) //从s到t的全排列{
if (s == t) { //递归结束,产生一个全排列
for (int i = 0; i < t; ++i) //输出一个排列
cout << b[i] << " ";
cout << endl;
return;
}
for (int i = 0; i < t; i++)
if (!vis[i]) {
vis[i] = true;
b[s] = a[i];
dfs(s + 1, t);
vis[i] = false;
}
}
int main() {
int n = 3;
dfs(0, n); //前n个数的全排列
return 0;
}
# ```当t改成3时,指的是n个数的任意3个数全排列