Description
输出自然数 11 到 nn 所有不重复的排列,即 nn 的全排列,要求所产生的任一数字序列中不允许出现重复的数字。
Input
第一行为一个整数nn
Output
由11至nn组成的所有不重复的数字序列,每行一个序列。
每个数字之间由空格隔开
Sample Input 1
3
Sample Output 1
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
Hint
$$1 \le n \le 91≤n≤9
$$ ## 题解 ```c #include<stdio.h>//uncle-lu /* 对当前的位置进行深度优先搜索,找到每个可以填进去的数进行尝试。搜完了这个位置以后回溯继续搜。 */ int n; int line[10]; int visit[10]; void print() { for(int i=1; i<=n; ++i) printf("%d ", line[i]); printf("\n"); return ; } void dfs(int x) { if(x>n) { print();//objective 4一共n个数都搜完了我们应该干啥? } for(int i=1; i<=n; ++i) { if(!visit[i]) { visit[i] = 1;//标记为1 line[x] = i;//答案数组将这个数记录 dfs(x+1); visit[i] = 0;//重新标记为0以便回溯的时候再次搜索 } } return; } int main() { scanf("%d",&n); dfs(1);//objective 3我们应该先搜哪里? return 0; } ```