(C语言)全排列问题

简介: (C语言)全排列问题

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; } ```

相关文章
|
存储 编译器 Linux
C语言例题讲解(中)
C语言例题讲解(中)
|
存储 C语言
C语言例题讲解(上)
C语言例题讲解(上)
|
C语言
C语言例题22:
题目要求:用指针方式实现strlen函数的功能   #include int mystrlen(char * p); void main() { char ch[10]; printf("输入字符串的内容/n"); ...
672 0
|
C语言
C语言例题24:
题目要求:给一个不超过5位的正整数,要求:    1、求出它是几位数    2、按逆序输出各位数字,例如原数是12345,应输出54321   #include void main() { int x; int a,...
929 0
|
C语言
C语言例题25:
 题目要求:一维数组实现杨辉三角   #include void main() { int i,j,x; //x,y是二个计数器,X是欲显示的行数 scanf("%d",&x); int a[20]={1...
821 0
|
C语言
C语言例题19:
题目要求:编写一个函数,打印学生成绩,该数组中有3个学生的数据记录,每个记录包括num,name,score[3],用主函数输入这些记录,输入学号,将该学号的学生记录输出   #include struct studen...
752 0
|
C语言
C语言例题21:
题目要求:求 2/1+3/2+5/3+8/5+...  的前20项的和   #include void main() { int i; double a=1; double b=2; double sum=0; ...
702 0
|
C语言 Serverless
C语言例题18:
题目要求:       要求1:定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天?注意闰年问题      要求2:写一个函数days,实现其功能。
731 0
|
人工智能 C语言
C语言例题16:
题目要求:二维数组实现杨辉三角   #include void main() { int i,j; int a[10][10]={1}; //在这里,最多显示到第10行 for(i=0;i
733 0
|
存储 C语言
C语言例题1:
题目要求:求sn=a+aa+aaa+...的值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。
659 0