LRJ-Example-06-17-Uva10562
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的更多相关文章
- 中美贸易战再次开启,世界两极化进程正在加快形成!..... 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/
- EZ 2018 06 17 NOIP2018 模拟赛(十九)
这次的题目难得的水,但是由于许多哲学的原因,第二题题意表述很迷. 然后是真的猜题意了搞了. 不过这样都可以涨Rating我也是服了. Upt:链接莫名又消失了 A. 「NOIP2017模拟赛11.03 ...
- 2019.06.17课件:[洛谷P1310]表达式的值 题解
P1310 表达式的值 题目描述 给你一个带括号的布尔表达式,其中+表示或操作|,*表示与操作&,先算*再算+.但是待操作的数字(布尔值)不输入. 求能使最终整个式子的值为0的方案数. 题外话 ...
- [每日一题2020.06.17] leetcode周赛T3 5438 制作m束花所需的最少天数 二分搜索
题目链接 这题我开始一直在想如何在数组上dp操作搜索区间, 很蠢, 实际上用二分查找的方法可以很快的解决 首先我们通过一个函数判断第x天是否符合题意, 如果x天可以做出m束花, 那么大于m的天数必然可 ...
- JavaSE学习总结第06天_Java语言基础2 & 面向对象1
06.01 二维数组概述和格式1的讲解 二维数组概述:二维数组其实就是一个元素为一维数组的数组 格式1:数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...
- python性能检测工具整理
python 运行后出现core dump产生core.**文件,可通过gdb来调试 Using GDB with a core dump having found build/python/core ...
- Struts2入门(二)——配置拦截器
一.前言 之前便了解过,Struts 2的核心控制器是一个Filter过滤器,负责拦截所有的用户请求,当用户请求发送过来时,会去检测struts.xml是否存在这个action,如果存在,服务器便会自 ...
- 2016第七季极客大挑战Writeup
第一次接触CTF,只会做杂项和一点点Web题--因为时间比较仓促,写的比较简略.以后再写下工具使用什么的. 纯新手,啥都不会.处于瑟瑟发抖的状态. 一.MISC 1.签到题 直接填入题目所给的SYC{ ...
- 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 ...
- Forward+
http://aras-p.info/blog/2012/03/02/2012-theory-for-forward-rendering/ http://www.slideshare.net/taka ...
随机推荐
- 学习JDK1.8集合源码之--PriorityQueue
1. PriorityQueue简介 PriorityQueue是一种优先队列,不同于普通队列的先进先出原则,优先队列是按照元素的优先级出列,每次出列都是优先级最高的元素.优先队列的应用很多,最典型的 ...
- Birt设置导出格式和去掉多余按钮的方法
1.设置导出格式: webcontent>birt>pages>dialog>ExportReportDialogFragment.jsp页面: 找到for ( int i = ...
- 云原生交付加速!容器镜像服务企业版支持 Helm Chart
2018 年 6 月,Helm 正式加入了 CNCF 孵化项目:2018 年 8 月,据 CNCF 的调研表明,有百分之六十八的开发者选择了 Helm 作为其应用包装方案:2019 年 6 月,阿里云 ...
- LUOGU 1278 单词游戏
题目描述 Io和Ao在玩一个单词游戏. 他们轮流说出一个仅包含元音字母的单词,并且后一个单词的第一个字母必须与前一个单词的最后一个字母一致. 游戏可以从任何一个单词开始. 任何单词禁止说两遍,游戏中只 ...
- 【eclipse】解决:eclipse或STS运行maven工程出现Missing artifact jdk.tools:jdk.tools:jar:1.7问题
eclipse或STS运行maven工程出现Missing artifact jdk.tools:jdk.tools:jar:1.7问题 最近项目中使用到大数据平台,代码中应用了hbase-clien ...
- 2017年浙工大迎新赛热身赛 A 毕业设计选题 【结构体排序】
时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 65536K,其他语言131072K64bit IO Format: %lld 题目描述 又到了一年一度,大四老学长们毕业设计选题的时候, ...
- IntelliJ IDEA 下的SVN使用(傻瓜式教学)(转)
第一步:下载svn的客户端,通俗一点来说就是小乌龟啦!去电脑管理的软件管理里面可以直接下载,方便迅速 下载之后直接安装就好了,但是要注意这里的这个文件也要安装上,默认是不安装的,如果不安装,svn中的 ...
- vue项目开发过程常见问题
更新时间:2018-07-29 1.data functions should return an object // 这个问题是 Vue 实例内,单组件的data必须返回一个对象;如下 <sc ...
- Leetcode695.Max Area of Island岛屿的最大面积
给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定的二维数组中 ...
- 2018-11-30-WPF-解决-ListView-的滚动条不显示
title author date CreateTime categories WPF 解决 ListView 的滚动条不显示 lindexi 2018-11-30 19:24:57 +0800 20 ...