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

相关文章
|
存储 C语言
C语言例题讲解(上)
C语言例题讲解(上)
|
C语言
C语言例题25:
 题目要求:一维数组实现杨辉三角   #include void main() { int i,j,x; //x,y是二个计数器,X是欲显示的行数 scanf("%d",&x); int a[20]={1...
823 0
|
C语言
C语言例题22:
题目要求:用指针方式实现strlen函数的功能   #include int mystrlen(char * p); void main() { char ch[10]; printf("输入字符串的内容/n"); ...
675 0
|
C语言 人工智能
C语言例题8:
 题目要求:求出所有的4位数,符合abcd=(ab+cd)2次方 #include void main() { int i; int a; for(i=1000;i
628 0
|
C语言 机器学习/深度学习
C语言例题23:
题目要求:输入两个数,求其最大公约和最小公倍数   #include void main() { int m,n,x,y; printf("输入两个正整数/n"); scanf("%d%d",&m,&n); if...
814 0
|
C语言
C语言例题5:
中国古代数学家张丘建在他的《算经》中提出了著名的“百钱买百鸡问题”:鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一,百钱买百鸡,问翁、母、雏各几何?     #include //方法一 void main() {...
838 0
|
存储 C语言
C语言例题1:
题目要求:求sn=a+aa+aaa+...的值,其中a是一个数字。例如:2+22+222+2222+22222(此时n=5),n由键盘输入。
663 0
|
C语言
C语言例题24:
题目要求:给一个不超过5位的正整数,要求:    1、求出它是几位数    2、按逆序输出各位数字,例如原数是12345,应输出54321   #include void main() { int x; int a,...
932 0
|
人工智能 C语言
C语言例题16:
题目要求:二维数组实现杨辉三角   #include void main() { int i,j; int a[10][10]={1}; //在这里,最多显示到第10行 for(i=0;i
735 0
|
C语言 网络协议
C语言例题6:
题目:猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个,以后每天早上都吃了前一天剩下的一半零一个,到第10天早上想再吃时,就只剩一个桃子了。
697 0