1038 全排列
-
描述:生成由1至n个数的全排列。
-
输入:输入包含多组样例,每组样例输入一个整数n(1≤n≤9)。
-
输出:按照字典序反序输出,每个数值之间用空格隔开。每个排列单独占一行。
-
输入示例
4
-
输出示例
4 3 2 1 4 3 1 2 4 2 3 1 4 2 1 3 4 1 3 2 4 1 2 3 3 4 2 1 3 4 1 2 3 2 4 1 3 2 1 4 3 1 4 2 3 1 2 4 2 4 3 1 2 4 1 3 2 3 4 1 2 3 1 4 2 1 4 3 2 1 3 4 1 4 3 2 1 4 2 3 1 3 4 2 1 3 2 4 1 2 4 3 1 2 3 4
-
代码块
#include <bits/stdc++.h> using namespace std; int result[15];//访问结果 bool vis[15];//访问数组 void backtrack(int n, int x){ if(x == n){ for(int i=0; i<n; i++){ printf("%d ", result[i]); } printf("\n"); } for(int i=1; i<=n; i++){ if(vis[i] ==0){ result[x] = i; x++; vis[i] = 1; backtrack(n, x); vis[i] = 0; x--; } } } int main(){ int x; while(~scanf("%d", &x)){ backtrack(x, 0); } system("pause"); return 0; }