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 ...
随机推荐
- Vue. 之 Element table 单元格内容隐藏
Vue. 之 Element table 单元格内容隐藏 在table显示数据时,若某个单元格的内容过多,需要进行隐层,在这一列的单元格属性添加::show-overflow-tooltip=&quo ...
- JavaBean与Map的相互转换
package com.bizvane.utils.tools; import java.lang.reflect.Field; import java.util.Arrays; import jav ...
- IbatchBolt和BaseTransactionalBolt区别
void prepare(java.util.Map conf, TopologyContext context, BatchOutputCollector collector, T id) T id ...
- 洛谷P1470 最长前缀
P1470 最长前缀 Longest Prefix 题目描述 在生物学中,一些生物的结构是用包含其要素的大写字母序列来表示的.生物学家对于把长的序列分解成较短的序列(即元素)很感兴趣. 如果一个集合 ...
- JavaScript 中的多线程通信的方法
在Html 5诞生之后,我们可以使用javascript来实现多线程处理.H5 新增了一个web workers api,使用这个API,用户可以很容易地创建在后台运行的线程,H5 中被称为workd ...
- js中保存成图片并下载
1.保存canvas中绘制的内容为图片 HTML代码: <canvas id="canvas" width="400" height="400& ...
- 2013B题碎纸片拼接
Photo1_1: clear;clc; path='E:\B\附件1\'; files=dir('E:\B\附件1\*.bmp'); % objdir='E:\B\附件1\'; % bgfile=[ ...
- [LeetCode] Evaluate Reverse Polish Notation [2]
题目 Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are +, ...
- 配置了两天python【python可以的】
首先是看cs231n 发现代码的版本是py2 而我只装了 py3(anaconda3) 怎么办呢 于是想办法装了 anaconda2 并与之共存 ,调用的时候用 activate py2调用 http ...
- Python 经典正则表达式语法实例