zoukankan      html  css  js  c++  java
  • dfs深度优先搜索

    题目描述
    今天,桐桐的老师布置了一道数学作业,要求列出所有从数字1到数字n的连续自然数的排列,要求所产生的任一数字序列中不允许出现重复的数字。因为排列数很多,桐桐害怕写漏了,所以她决定用计算机编程来解决。

    输入
    只有一个整数n(1≤n≤9)。

    输出
    按字典序输出由1~n组成的所有不重复的数字序列,每行一个序列,每个数字之间有一个空格。

    样例输入
    复制样例数据
    3
    样例输出
    1 2 3
    1 3 2
    2 1 3
    2 3 1
    3 1 2
    3 2 1

    #include <stdio.h>
    #include <stdlib.h>
    int a[10],book[10],n;
    void dfs(int step)
    {
        int i;
        if(step==n+1)
        {
            for(i=1;i<=n;i++)
                printf("%d ",a[i]);
            printf("
    ");
            return;
        }
        for(i=1;i<=n;i++)
        {
            if(book[i]==0)
            {
                a[step]=i;
                book[i]=1;
                dfs(step+1);
                book[i]=0;
            }
        }
        return;
    }
    int main()
    {
        scanf("%d",&n);
        dfs(1);
        return 0;
    }
    
    
  • 相关阅读:
    魔法跳舞链 51Nod
    反射
    JDBC---后端服务器与数据库交互的桥梁
    多线程
    IO流
    继承与重写
    java.util包
    多态
    Java.lang包
    异常
  • 原文地址:https://www.cnblogs.com/skyleafcoder/p/12319596.html
Copyright © 2011-2022 走看看