博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
例题6-17 UVa10562 Undraw the Trees(树)
阅读量:6829 次
发布时间:2019-06-26

本文共 984 字,大约阅读时间需要 3 分钟。

题意:

将一棵多叉树转换成括号表示法

要点:

用先序遍历直接在二维数组内递归,主要是字符的输入判断比较麻烦,还有如果同时用scanf和gets的话,要把scanf后的换行符除去

#include
#include
#include
#include
#define maxn 250char buf[maxn][maxn];int n;void dfs(int r, int c){ printf("%c(", buf[r][c]); if (r + 1 < n&&buf[r + 1][c] == '|')//有子树 { int i = c; while (i - 1 >= 0 && buf[r + 2][i-1] == '-')//找“------”的左边界 i--; while (buf[r + 2][i] == '-'&&buf[r + 3][i] != '\0') { if (!isspace(buf[r + 3][i]))//isspace()寻找空格函数,\n也包括在内 dfs(r + 3, i); i++; } } printf(")");}void solve(){ n = 0; for (;;) { fgets(buf[n], maxn, stdin); if (buf[n][0] == '#') break; else n++; } printf("("); if (n) { for (int i = 0; i < strlen(buf[0]);i++) if (buf[0][i] != ' ') //先将根结点输入,找到字母的位置 { dfs(0, i); break; } } printf(")\n");}int main(){ int t; scanf("%d", &t); getchar(); //除去换行符,否则干扰 while (t--) solve(); return 0;}

转载于:https://www.cnblogs.com/seasonal/p/10343842.html

你可能感兴趣的文章
###20175311MyCP(课下作业,必做)
查看>>
WCF 第二章 契约 同步请求回复操作
查看>>
Python3 Socket网络编程
查看>>
山泉戒
查看>>
Message Decoding
查看>>
EL表达式产生了DOM对象
查看>>
iOS开发数据库篇—FMDB简单介绍
查看>>
app测试更多机型系统解决方法
查看>>
winxp sp2下安装.net framework失败解决方法
查看>>
python-pcap模块解析mac地址
查看>>
LeeCode-Rotate Array
查看>>
JS封装动画框架,网易轮播图,旋转轮播图
查看>>
前端项目微金所1 - bootstrap模板,Compatible(兼容),Viewport(视口),条件注释,第三方依赖,MediaQuery媒体查询...
查看>>
【java】java学习之路-06-MySQL(四)
查看>>
解决myeclipse部署web项目时报错
查看>>
使用REGINI修改注册表权限
查看>>
关于二进制的利用
查看>>
进程关系
查看>>
非阻塞套接字实现并发处理
查看>>
[leetcode] 一些会的
查看>>