#include<bits/stdc++.h>
using namespace std;int n, a[110];void f(int x) { // 不仅作为一个参数,代表了当前的递归层数 if (x > n) { // x的值超过n的时候,说明已经递归了n次了,已经有n个循环了 // 如何判断方案合法性,以及如何输出 for (int i=1;i<=n;i++) printf("%d ",a[i]);printf("\n"); // 判断,a[1]~a[n]中没有相同数字,符合的话,才输出 return;}for (int i=1;i<=n;i++) {// 如何将不同递归层数当中的枚举出来的数存下来 (设定全局变量) a[x] = i; // 记录,第x层递归枚举出来的数是i f(x+1);}
} // n个1~n的循环在嵌套 int main() {scanf("%d",&n);// n个循环嵌套,每个循环是1~n,最终删去相同元素方案 f(1);/* for (int i=1;i<=3;i++) {for (int j=1;j<=3;j++) {for (int k=1;k<=3;k++) {//如果存在相同数字,continueif (i==j || j==k || i==k) continue; printf("%d %d %d\n",i,j,k);}}} // 暴力填数思想 + 筛选答案思想、
*/ return 0;
}