zoukankan      html  css  js  c++  java
  • DFS(Depth First Search)深度优先搜索算法

    基本概念:

      深度优先搜索算法:一种用于遍历或搜索树或图的算法。沿着树的深度遍历树的节点,尽可能深的搜索树的分支。当节点V的所在边都已被搜寻过或者在搜寻时节点不满足,搜索将回溯到发现节点V的那条边的起始节点。整个过程反复进行直到所有节点都被访问为止。最糟糕时算法复杂度O(!n)。

    输入样例:

    6
    a c b d e f 

    输出样例:

    a
    c
    b
    d
    e
    f

    提交:

    #include <iostream>
    #include <string.h>
    using namespace std;
    //全排列,n个字符依次放入n个箱子中,首先检查箱子是否为空,手中还有什么字符,放进去并标记。
    //放完一次恢复初始状态,当到n+1各箱子时,一次排列结束
    int n;
    char a[6];
    char re[6];
    int vis[6];
    
    void dfs(int step) {
        int i;
        if (step == n+1) {//判断边界
            for (i=1; i<=n; i++)
                printf("%c",re[i]);
            printf("
    ");
            return ;
        }
        for (i=1;i<=n;i++) {//遍历每一种情况
            if (vis[i] == 0) {//check满足
                re[step] = a[i];
                vis[i]=1;//标记
                dfs(step+1);//继续搜索
                vis[i]=0;//恢复初始状态
            }
        }
        return;
    }
    
    int main() {
        int T;
        scanf("%d",&T);
        getchar();
        while(T--){
            memset(a,0,sizeof(a));
            memset(vis,0,sizeof(vis));//对存数据的数组分别初始化
            scanf("%s",a+1);
            n = strlen(a+1);
            dfs(1);//从第一个箱子开始
        }
        return 0;
    }
  • 相关阅读:
    好友消息和群消息区别
    好友消息和群消息区别
    完整的微信登陆 接收消息流程
    完整的微信登陆 接收消息流程
    perl 对象 通过bless实现
    perl 对象 通过bless实现
    00019_数组的定义
    关于tinymce粘贴图片自动上传
    关于kindeditor粘贴图片自动上传
    关于ckeditor粘贴图片自动上传
  • 原文地址:https://www.cnblogs.com/cgy-home/p/15109437.html
Copyright © 2011-2022 走看看