• 4070 全排列


    题目来源:
    http://bailian.openjudge.cn/practice/4070/
    描述
    对于数组[1, 2, 3],他们按照从小到大的全排列是
    1 2 3
    1 3 2
    2 1 3
    2 3 1
    3 1 2
    3 2 1
    现在给你一个正整数n,n小于8,输出数组[1, 2, …,n]的从小到大的全排列。

    输入
    输入有多行,每行一个整数。当输入0时结束输入。
    输出
    对于每组输入,输出该组的全排列。每一行是一种可能的排列,共n个整数,每个整数用一个空格隔开,每行末尾没有空格。
    样例输入
    2
    3
    0
    样例输出
    1 2
    2 1
    1 2 3
    1 3 2
    2 1 3
    2 3 1
    3 1 2
    3 2 1
    题意描述:
    输入一个正整数n(小于8)
    输出1到n的所有全排列方案
    解题思路:
    意即求n个位置放n个数的所有方案
    程序代码:

     1 #include<stdio.h>
     2 int r[10],u[10];
     3 void dfs(int n,int x);
     4 int main()
     5 {
     6     int n,i;
     7     while(scanf("%d",&n),n!=0)
     8     {
     9         dfs(n,1);    
    10     }
    11     return 0;
    12 }
    13 void dfs(int n,int x)
    14 {
    15     int i;
    16     if(n+1==x)
    17     {
    18         for(i=1;i<n;i++)
    19             printf("%d ",r[i]);
    20         printf("%d
    ",r[n]);
    21         return;
    22     }
    23     for(i=1;i<=n;i++)
    24     {
    25         if(!u[i])
    26         {
    27             r[x]=i;
    28             u[i]=1;
    29             dfs(n,x+1);
    30             
    31             u[i]=0;
    32         }
    33     }
    34 }
  • 相关阅读:
    专题——递归
    今日听郝斌老师鸡汤
    线性结构的两种常见应用之一 队列
    线性结构的两种应用之一——栈
    C++常用库函数
    洛谷 标志重捕法?
    c++复习——临考前的女娲补天 >=.<
    c++复习——类(2)
    c++复习——类(1)
    Python单元测试
  • 原文地址:https://www.cnblogs.com/wenzhixin/p/6925302.html
Copyright © 2020-2023  润新知