题意:

Homer教授被报道失踪了,我们怀疑这和他最近的研究有关,但是我们确实不知道他最近在研究什么.

侦探们试图侵入他的电脑,再几次失败后才意思到教授的智力超出他们很多..........................................................

输入:

第一行输入一个数字表示树的数目(1<T<20),每个树的输入结尾以#结尾,从上到下的风格画树,

每个结点的标记字符是任意一个可的打印的字符,除了‘-’,‘|’,‘ ’空格,如果一个下面有一个'|'表示它有一个儿子,下一行是一行'-',至少覆盖子树的边缘,

输出:

先序遍历

#include <stdio.h>
#include<math.h>
#include <memory.h>
#include<queue>
#include <iostream>
using namespace std;
string dfs(int i, int j, int total); const int N = 220;
char map[N][N]; int findKey(int i, int j)
{
int kk = -1;
for (int k = j;; k++)
{
if (i != 0 && map[i - 1][k] == ' ')
return -1;
if (map[i][k] == '\0')
{
return -1;
}
if (map[i][k] == ' ')
continue;
kk = k;
break;
}
return kk;
}
string dfsSub(int i, int j, int total)
{
//有子树
while (j != 0 && map[i + 1][j - 1] == '-')
j--;
//找到key的开始
while (map[i + 2][j] == ' ')
j++;
return dfs(i + 2, j, total);
}
string dfs(int i, int j, int total)
{
string str = "";
if (i == total)
return str;
int next = -1;
if ((next = findKey(i, j)) == -1)
{
return str;
}
j = next;
str += map[i][next]; str = str + "(";
if (i + 1 != total && map[i + 1][j] == '|')
{
string s2 = dfsSub(i + 1, j, total);
str += s2;
}
str = str + ")";
//下一个key,注意上层的---
str += dfs(i, j + 1, total);
return str;
} int main()
{
//freopen("d:\\1.txt", "r", stdin); int n;
cin >> n;
getchar();
while (n--)
{
memset(map, 0, sizeof(map));
int total = 0;
while (true)
{
gets(map[total]);
if (map[total][0] == '#')
{
break;
}
total++;
}
string str = "(";
str += dfs(0, 0, total);
str += ")";
cout << str << endl;
}
return 0;
}

  感觉还是不能看别人题解!!!!!!!

最新文章

  1. Hadoop Shell命令大全
  2. LVS相关学习
  3. ecshop 进入后台登录帐号出现乱码解决方法
  4. 科谱,如何单机环境下合理的备份mssql2008数据库
  5. 代理和block反向传值
  6. JS语法部分-数组
  7. dapper 自定义数据库字段和代码中Model字段不一致时候的mapping方法
  8. inter
  9. codeforces 392B Tower of Hanoi
  10. LINUX的命令(未完待续)
  11. 银行综合储蓄业务系统,水平为学了一年C语言
  12. Eclipse常用热键
  13. Shuffle 的 5步
  14. Java语言程序设计-Markdown格式作业模板
  15. 《MySQL必知必会》学习笔记_1
  16. js基础--获取浏览器当前页面的滚动条高度的兼容写法
  17. crawlspider_房多多
  18. R-CNN,SPP-NET, Fast-R-CNN,Faster-R-CNN, YOLO, SSD系列深度学习检测方法梳理
  19. Docker for windows 入门二(Kitematic的使用)
  20. Java依赖注入方式

热门文章

  1. [LeetCode&amp;Python] Problem 821. Shortest Distance to a Character
  2. Shader的基本用法和语法结构
  3. hdu2083 简易版之最短距离 排序水题
  4. LeetCode-Microsoft-Add Two Numbers II
  5. php利用curl获取网页title内容
  6. JS实现表单多文件上传样式美化支持选中文件后删除相关项
  7. Apache+modjk布置tomcat集群
  8. 让node支持es模块化(export、import)的方法
  9. java 方向术语
  10. centos7 MFS drbd keepalived