传送门:

1. UVA - 10562

2. Vjudge

[看图写树]

    将题目中给出的树改写为 括号表示法 即 (ROOT (SON1(...) (SON2(...)...(SONn(...))的表示方法,空树括号留空,例如:

     A
     |
 --------
 B  C   D
    |   |
  ----- -
  E   F G
 #
 e
 |
 ----
 f g
 #

上图有两棵树,'#'指该棵树如入完毕,将要表示为:

 (A(B()C(E()F())D(G())))
 (e(f()g()))

分析:递归求解的经典题,类似于逆波兰表达式(POJ)等等.需要注意细节,代码如下

 #include<iostream>
 #include<cstdio>
 #include<cstring>
 #include<algorithm>
 using namespace std;
 +;
 int n;
 char buf[maxn][maxn];//保存树形图
 void dfs(int r,int c);//遍历'树'
 void solve();
 int main()
 {
     int T;
     fgets(buf[],maxn,stdin);//从字串中读入数字
     sscanf(buf[],"%d",&T);
     while(T--) solve();
     system("pause");
 }
 void dfs(int r,int c)
 {
     printf("%c(",buf[r][c]);//输出字符
     <n && buf[r+][c]=='|')//寻找边
     {
         int i=c;//
         >= && buf[r+][i-]=='-') i--;//找到最左边的'-'位置
         ][i]==][i] != '\0') {//从该位置往右找,直到最后一个'-'
             ][i])) dfs(r+,i);\\找到一个字符,进入下一层
             i++;
         }
     }
     printf(")");
 }
 void solve()
 {
     n=;
     )
     {
         fgets(buf[n],maxn,stdin);
         ]=='#') break;//读到结束符
         else n++;
     }
     printf("(");
     if(n)
     {
         ;i<strlen(buf[]);i++)
             ][i]!=' '){//寻找到树的根
                 dfs(,i);
                 break;//停止寻找
             }
     }
     printf(")\n");
 }
 

这类题比较水,但鉴于是紫书上的例题,还是贴一贴.^O^ 

[DFS遍历图]UVA10562 Undraw the Trees的更多相关文章

  1. UVa10562 Undraw the Trees

      注意点: 空树情况处理. >= && buf[r+][i-]=='-') i--; #include<cstdio> #include<cstring> ...

  2. 邻接表存储图,DFS遍历图的java代码实现

    import java.util.*; public class Main{ static int MAX_VERTEXNUM = 100; static int [] visited = new i ...

  3. Uva10562——Undraw the Trees

    上来一看感觉难以下手,仔细想想就是dfs啊!!!! #include <cstdio> #include<iostream> #include<iomanip> # ...

  4. 图之BFS和DFS遍历的实现并解决一次旅游中发现的问题

    这篇文章用来复习使用BFS(Breadth First Search)和DFS(Depth First Search) 并解决一个在旅游时遇到的问题. 关于图的邻接表存储与邻接矩阵的存储,各有优缺点. ...

  5. 列出连通集(DFS及BFS遍历图) -- 数据结构

    题目: 7-1 列出连通集 (30 分) 给定一个有N个顶点和E条边的无向图,请用DFS和BFS分别列出其所有的连通集.假设顶点从0到N−1编号.进行搜索时,假设我们总是从编号最小的顶点出发,按编号递 ...

  6. 图的dfs遍历模板(邻接表和邻接矩阵存储)

    我们做算法题的目的是解决问题,完成任务,而不是创造算法,解题的过程是利用算法的过程而不是创造算法的过程,我们不能不能陷入这样的认识误区.而想要快速高效的利用算法解决算法题,积累算法模板就很重要,利用模 ...

  7. 【洛谷2403】[SDOI2010] 所驼门王的宝藏(Tarjan+dfs遍历)

    点此看题面 大致题意: 一个由\(R*C\)间矩形宫室组成的宫殿中的\(N\)间宫室里埋藏着宝藏.由一间宫室到达另一间宫室只能通过传送门,且只有埋有宝藏的宫室才有传送门.传送门分为3种,分别可以到达同 ...

  8. 【算法】二叉树、N叉树先序、中序、后序、BFS、DFS遍历的递归和迭代实现记录(Java版)

    本文总结了刷LeetCode过程中,有关树的遍历的相关代码实现,包括了二叉树.N叉树先序.中序.后序.BFS.DFS遍历的递归和迭代实现.这也是解决树的遍历问题的固定套路. 一.二叉树的先序.中序.后 ...

  9. 深度-first遍历图--邻接表实现

    在这里,邻接表的实现与深度优先遍历图,使用递归. #include<iostream> using namespace std; #define VERTEXNUM 5//结点数 stru ...

随机推荐

  1. 【学习】文本框输入监听事件oninput

    真实项目中遇到的,需求是:一个文本框,一个按钮,当文本框输入内容时,按钮可用,当删除内容时,按钮不可用. 刚开始用的focus和blur, $(".pay-text").focus ...

  2. memcached+狀態模式+工廠方法使用

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  3. C++每次读取一行字符串输入(学习笔记) (转)

    1. 面向行的输入:getline()getline()函数读取整行,它使用通过回车键输入的换行符来确定输入结尾. cin.getline(Arr, 20) // Arr为用来输入行的数组的名称:   ...

  4. 浅谈Django的生命周期和CBF和FBC

    Django的生命周期和CBF和FBC 对于所有的web框架来说本质就是一个socket服务端,浏览器是socket客户端,客户端和服务端通信,字符串(Http协议):请求头和请求体 响应头+响应体 ...

  5. Myeclipse10连接SqlServer2012

    本文纯手打!!!! 对于我们这些刚学java的小白,可是真费劲啊!!!! 要用java连接数据库  首先是要通过JDBC驱动 要先去下载一个sqljdbc4.jar,我这里放百度云盘了, 下载地址:链 ...

  6. linux 下gcc生成intel汇编

    留作备忘: gcc -S -masm=intel xxxx.c 生成elf可执行文件: gcc -o xxx xxxx.s 反汇编 objdump xxx 补充: 在使用gcc 对C语言程序进行编译时 ...

  7. APUE 4 - 线程<2> : 线程同步

    当控件的多个线程共享统一内存时,我们需要确定各个线程访问到的数据的一致性.在cpu结构中,修改操作由多个内存读写周期(memory cycle),而在这些内存周期之间, 有可能会发生其他线程的内存读操 ...

  8. Web前端性能优化——如何有效提升静态文件的加载速度

    WeTest 导读 此文总结了笔者在Web静态资源方面的一些优化经验. 一.如何优化 用户在访问网页时, 最直观的感受就是页面内容出来的速度,我们要做的优化工作, 也主要是为了这个目标.那么为了提高页 ...

  9. tomcat启动报错Several ports (8080, 8009) required by Tomcat v6.0

    tomcat启动报错 如下图: 问题:8080.8009端口已经被占用. 解决办法: 1.在命令提示符下,输入netstat -aon | findstr 8080 2.继续输入taskkill -F ...

  10. How the Intelligent Digital Mesh Will Transform Every Business Layer

    The "intelligent digital mesh" is the definitive package for tomorrow's titans of business ...