main() 函数中的这两行

fgets(buf[0], maxn, stdin);
sscanf(buf[0], "%d", &T);

不能简单替换为

scanf("%d", &T);

因为这会影响后面用fgets()读取数的内容。这个scanf之后调用 fgets() 会读取一个空的行。

从样例输出里面可以看到

每棵树的最外侧有一对()

每个叶子节点后面是(),代表空树

#include <cstdio>
#include <cstring>
#include <cctype> using namespace std; int n = ;
const int maxn = + ;
char tree[maxn][maxn]; bool isLabel(char c) {
if( c == '-' || c == '|' || c == ' ' || c == '#' || c == '\n') return false;
else return true;
} void dfs(int row, int col)
{
printf("%c(", tree[row][col]);
if(row+ < n && tree[row+][col] == '|') { // [row][col] has a subtree
//
if(row+ < n) { // ----
// find leftmost '-' of this subtree
int c = col;
int l = strlen(tree[row+]);
while(c- >= && tree[row+][c-] == '-') c--; //printf("\nleftmost - is at [%d][%d]\n", row+2, c); for(int i = c; i < l && tree[row+][i] == '-'; i++) { // each child
//if(row+3 < n && tree[row+3][i] != '\0' && !isspace(tree[row+3][i])) {
if(row+ < n && isLabel(tree[row+][i]) && !isspace(tree[row+][i])) {
dfs(row+, i);
}
}
}
}
printf(")");
} void solve() {
memset(tree, , sizeof(tree));
n = ;
while(true) {
fgets(tree[n], maxn, stdin); // read each line
if(tree[n][] == '#') break;
n++;
} /*
for(int i = 0; i < n; i++) {
printf("%s", tree[i]);
}
*/ printf("("); if(n > ) { // tree is not empty
int col = ;
int len = strlen(tree[]);
//while(col < len && tree[0][col] == ' ') col++; //dfs(0, col); //root is at [0][col]
for(int i = ; i < len; i++)
if(tree[][i] != ' ') {
dfs(, i);
break;
}
} printf(")\n");
} int main() {
int T;
fgets(tree[], maxn, stdin);
sscanf(tree[], "%d", &T);
while(T--) {
solve();
}
}

下面是 accept的代码

#include <cstdio>
#include <cstring>
#include <cctype> using namespace std; int n = ;
const int maxn = + ;
char tree[maxn][maxn]; bool isLabel(char c) {
if( c == '-' || c == '|' || c == ' ' || c == '#' || c == '\n') return false;
else return true;
} void dfs(int row, int col)
{
printf("%c(", tree[row][col]);
if(row+ < n && tree[row+][col] == '|') { // [row][col] has a subtree
//
if(row+ < n) { // ----
// find leftmost '-' of this subtree
int c = col;
int l = strlen(tree[row+]);
while(c- >= && tree[row+][c-] == '-') c--; //printf("\nleftmost - is at [%d][%d]\n", row+2, c); for(int i = c; i < l && tree[row+][i] == '-'; i++) { // each child
if(row+ < n && tree[row+][i] != '\0' && !isspace(tree[row+][i])) {
//if(row+3 < n && isLabel(tree[row+3][i]) && !isspace(tree[row+3][i])) {
dfs(row+, i);
}
}
}
}
printf(")");
} void solve() {
memset(tree, , sizeof(tree));
n = ;
while(true) {
fgets(tree[n], maxn, stdin); // read each line
if(tree[n][] == '#') break;
n++;
} /*
for(int i = 0; i < n; i++) {
printf("%s", tree[i]);
}
*/ printf("("); if(n > ) { // tree is not empty
int col = ;
int len = strlen(tree[]);
//while(col < len && tree[0][col] == ' ') col++; //dfs(0, col); //root is at [0][col]
for(int i = ; i < len; i++)
if(tree[][i] != ' ') {
dfs(, i);
break;
}
} printf(")\n");
} int main() {
int T;
fgets(tree[], maxn, stdin);
sscanf(tree[], "%d", &T);
while(T--) {
solve();
}
}

LRJ-Example-06-17-Uva10562的更多相关文章

  1. 中美贸易战再次开启,世界两极化进程正在加快形成!..... Copyright: 1688澳洲新闻网 Read more at: https://www.1688.com.au/world/international/2018/06/17/369368/

    中美贸易战再次开启,世界两极化进程正在加快形成! https://www.1688.com.au/world/international/2018/06/17/369368/

  2. EZ 2018 06 17 NOIP2018 模拟赛(十九)

    这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...

  3. 2019.06.17课件:[洛谷P1310]表达式的值 题解

    P1310 表达式的值 题目描述 给你一个带括号的布尔表达式,其中+表示或操作|,*表示与操作&,先算*再算+.但是待操作的数字(布尔值)不输入. 求能使最终整个式子的值为0的方案数. 题外话 ...

  4. [每日一题2020.06.17] leetcode周赛T3 5438 制作m束花所需的最少天数 二分搜索

    题目链接 这题我开始一直在想如何在数组上dp操作搜索区间, 很蠢, 实际上用二分查找的方法可以很快的解决 首先我们通过一个函数判断第x天是否符合题意, 如果x天可以做出m束花, 那么大于m的天数必然可 ...

  5. JavaSE学习总结第06天_Java语言基础2 & 面向对象1

      06.01 二维数组概述和格式1的讲解 二维数组概述:二维数组其实就是一个元素为一维数组的数组 格式1:数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...

  6. python性能检测工具整理

    python 运行后出现core dump产生core.**文件,可通过gdb来调试 Using GDB with a core dump having found build/python/core ...

  7. Struts2入门(二)——配置拦截器

    一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...

  8. 2016第七季极客大挑战Writeup

    第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...

  9. A couple of notes about .NET Framework 4.6 setup behaviors

    https://blogs.msdn.microsoft.com/astebner/2015/06/17/a-couple-of-notes-about-net-framework-4-6-setup ...

  10. Forward+

    http://aras-p.info/blog/2012/03/02/2012-theory-for-forward-rendering/ http://www.slideshare.net/taka ...

随机推荐

  1. Git.之.最小化配置

    Git.之.最小化配置 做一个全局的用户配置,便于以后提交代码等,记录当前操作的用户. ## 添加配置 # git config [--local | --global | --system] use ...

  2. 2019.8.12 NOIP模拟测试18 反思总结

    写个博客总是符合要求的对吧 回来以后第一次悄悄参加考试,昨天全程围观… 然后喜提爆炸120分wwwwwwwww T1用了全机房最慢的写法,导致改掉死循环T掉的一个点以后还是死活过不了最后一个点.T2全 ...

  3. 简单描述如何安装配置一个apache开源版hadoop,只描述即可,无需列出完整步骤,能列出步骤更好

    1 ) 安装JDK并配置环境变量(/etc/profile) 2) 关闭防火墙 3) 配置hosts文件,方便hadoop通过主机名访问(/etc/hosts) 4) 设置ssh免密码登录 5) 解压 ...

  4. Struts_改写客户列表练习

    1.CustomerAction修改放入ActionContext 2.list.jsp使用struts标签库

  5. config.js配置页面中的样式和图片路径

    这个文章用在什么地方,我先说一下,上周啊,我接到一个任务.因为公司业务要对接不同的银行,例如在工行下颜色是红色的,在其他银行下默认为蓝色,所以在页面一致的情况下,保证页面中的按钮和ICON是可以配置的 ...

  6. 微信小程序--Tab栏切换的快速实现

    上效果! wxss样式代码: .tabs-item.selected { color:rgba(,,,.); border-bottom:2px solid rgba(,,,.); } .tabs-i ...

  7. perfcurve.m

    function [X,Y,T,auc,optrocpt,subY,subYnames] = ... perfcurve(labels,scores,posClass,varargin) %PERFC ...

  8. margin负值5种应用

    最近做的项目中经常会用到margin的负值,这里就总结一下关于margin负值的5种使用及相关bug的解决. 1. 在流动性布局中的应用 如WordPress的两栏式不固定布局就是使用margin负值 ...

  9. 2018-8-10-C#-快速释放内存的大数组

    title author date CreateTime categories C# 快速释放内存的大数组 lindexi 2018-08-10 19:16:52 +0800 2018-2-13 17 ...

  10. jQuery圆盘抽奖

    在线演示 本地下载