洛谷P1706 全排列问题


题目描述

输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字。

输入输出格式

输入格式:

n(1≤n≤9)

输出格式:

由1~n组成的所有不重复的数字序列,每行一个序列。每个数字保留5个常宽。

输入输出样例

输入样例#1:

3

输出样例#1:

 

    1    2    3
    1    3    2
    2    1    3
    2    3    1
    3    1    2
    3    2    1

 

代码如下:

 1 #include<iostream>
 2 #include<cstdio>
 3 using namespace std;
 4 int n, book[1010], st[1010];
 5 void dfs(int u){
 6     if(u == n){
 7         for(int i = 0; i < n; i++)    printf("%5d", st[i]);
 8         printf("\n");
 9     }
10     for(int i = 1; i <= n; i++){
11         if(!book[i]){
12             book[i] = 1;
13             st[u] = i;
14             dfs(u + 1);
15             book[i] = 0;
16         }
17     }
18 }
19 int main(){
20     scanf("%d", &n);
21     dfs(0);
22     return 0;
23 } 
全排列问题

 


作者:zoom1109,发布于:2019/07/12
原文:https://www.cnblogs.com/zoom1109/p/11174852.html