当前位置: 首页 > news >正文

c++ 深度优先算法输出树的访问顺序

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

172404_Qh0W_1474656.png

输出使用深度优先算法访问树的顺序;

yuanzhen@ubuntu:~/C_script$ cat dfs_two.cpp
#include <vector>
#include <iostream>
#include <cstdlib>

using std::cout;
using std::endl;
using std::vector;

vector<vector<int> > vec;
vector<int> book(13,0);
vector<int> result(13,0);

void show(vector<vector<int> > avec)
{
    vector<vector<int> >::const_iterator cit;
    vector<int>::const_iterator it;

    for(cit=avec.begin(); cit!=avec.end();++cit)
    {
        vector<int> ivec=(*cit);
        for(it=ivec.begin();it!=ivec.end();++it)
        {
            cout << *it << " ";
        }
        cout << endl;
    }
}


vector<vector<int> > init()
{
    int arr[11][2]={{1,2},{1,7},{1,8},{2,3},{2,6},{3,4},{3,5},{8,9},{8,12},{9,10},{9,11}};

    vector<vector<int> >avec(13, vector<int>(13,0));
    for(int i=1;i<13;++i)
      avec[i][0]=i;

    for(int j=1;j<13;++j)
      avec[0][j]=j;

    for(int k=0;k<11;++k)
    {
        int x=arr[k][0];
        int y=arr[k][1];

        avec[x][y]=1;
        avec[y][x]=1;
    }
    return avec;
}

void dfs(int node, int step)
{
    cout << node << endl;
    for(int i=1;i<13;++i)
    {
        if(vec[node][i]==1 && book[i]==0)
        {
            book[i]=1;
            dfs(i, step+1);
            book[i]=0;
        }
    }
}

int main(int argc, char** argv)
{
    vec=init();
    show(vec);
    book[1]=1;
    dfs(1,1);
}
##################################

结果

0 1 2 3 4 5 6 7 8 9 10 11 12 
1 0 1 0 0 0 0 1 1 0 0 0 0 
2 1 0 1 0 0 1 0 0 0 0 0 0 
3 0 1 0 1 1 0 0 0 0 0 0 0 
4 0 0 1 0 0 0 0 0 0 0 0 0 
5 0 0 1 0 0 0 0 0 0 0 0 0 
6 0 1 0 0 0 0 0 0 0 0 0 0 
7 1 0 0 0 0 0 0 0 0 0 0 0 
8 1 0 0 0 0 0 0 0 1 0 0 1 
9 0 0 0 0 0 0 0 1 0 1 1 0 
10 0 0 0 0 0 0 0 0 1 0 0 0 
11 0 0 0 0 0 0 0 0 1 0 0 0 
12 0 0 0 0 0 0 0 1 0 0 0 0 
------------------------------
1 2 3 4 5 6 7 8 9 10 11 12 
 

转载于:https://my.oschina.net/lCQ3FC3/blog/823175

相关文章:

  • WCF NetTcpBinding Transport安全模式(1)NetTcpSecurity定义
  • 微信公众号开发之网页中及时获取当前用户Openid及注意事项
  • cocos2d基本类介绍 director/scene/layer/sprite
  • TiDB 源码初探
  • 小而合理的前端理论:rscss和rsjs
  • Dell-R730 【Pxe+dhcp+ftp+tftp+Kickstart+CentOs6.6】
  • Bounce(弹走绵羊)lct裸题
  • MyBatis insert 返回主键的方法
  • dede数据库内容替换,去掉文章内容中的img标签
  • Android javaMail使用imap协议接收邮件
  • 缓存遇到的数据过滤与分页问题
  • 通过libVirt抓取kvm虚拟机监控指标数据
  • Eclipse+Pydev
  • TTL和RS232之间的详细对比
  • NSMutableArray崩溃信息
  • [PHP内核探索]PHP中的哈希表
  • 【面试系列】之二:关于js原型
  • ComponentOne 2017 V2版本正式发布
  • css选择器
  • Docker: 容器互访的三种方式
  • flask接收请求并推入栈
  • Java超时控制的实现
  • JAVA多线程机制解析-volatilesynchronized
  • python docx文档转html页面
  • python3 使用 asyncio 代替线程
  • ReactNative开发常用的三方模块
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • spring-boot List转Page
  • SQLServer之索引简介
  • Zepto.js源码学习之二
  • 简单易用的leetcode开发测试工具(npm)
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 实现简单的正则表达式引擎
  • 我与Jetbrains的这些年
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 小程序button引导用户授权
  • 1.Ext JS 建立web开发工程
  • #1015 : KMP算法
  • #前后端分离# 头条发布系统
  • $.ajax,axios,fetch三种ajax请求的区别
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (C语言)strcpy与strcpy详解,与模拟实现
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)Linux——Linux常用指令
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (四)Controller接口控制器详解(三)
  • (四)图像的%2线性拉伸
  • (转)c++ std::pair 与 std::make
  • (转)创业的注意事项
  • .NET Core WebAPI中封装Swagger配置