UVA
来源:互联网 发布:手机万网域名如何解析 编辑:程序博客网 时间:2024/06/06 03:01
/* 直接在二维字符数组中递归,无须建树 注意对空树的处理,以及,结点标号可以是任意可打印字符 其他链接: 1. http://www.cnblogs.com/Bob-tong/p/6610647.html isspace()函数的功能为:判断输入字符是否为空格/回车/制表符等 (而不仅仅只是判断空格) 2. http://blog.csdn.net/daiyutage/article/details/8540932 fgets()函数的有关介绍,一般 fgets()会比用 gets()安全,所以很有必要仔细研究下 fgets()的用法 3. http://www.cnblogs.com/kex1n/archive/2011/06/09/2076501.html sscanf()函数,利用它可以从字符串中取出整数、浮点数和字符串等等 */
#include <cstdio>#include <cctype>#include <cstring>using namespace std;const int N = 200 + 10;int n;char buf[N][N];// 递归遍历并且输出以字符 buf[r][c] 为根的树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]) ) dfs(r + 3, i); // fgets 读入的 '\n' 也满足 isspace()i++; } }printf(")");} void solve(){n = 0;while (true){fgets(buf[n], N, 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;//fgets(buf[0], N, stdin);//sscanf(buf[0], "%d", &t);scanf("%d", &t);getchar();while (t--)solve();return 0;}
阅读全文
0 0
- uva
- UVA
- UVA
- UVA
- uva
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- UVA
- 计算机存储的大小端模式
- 类和对象基础
- plt.savefig()保存图片一片空白解决办法
- CSDN屏蔽测试:计网_在相同交换机上划分vlan
- hahaha
- UVA
- 奶牛的锻炼 DP
- 为什么绑定了手机CSDN赠送的积分没到账?
- String常用方法(一)
- VIM 基本配置
- Qt exe程序缺少dll的解决方法
- java使用org.w3c.dom解析XML文档,创建、增删查改,保存,读取,遍历元素等操作
- 深度学习软件安装指南
- 谷歌2017新品发布会:赋能AI 三大原则 软硬结合