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 ...
随机推荐
- python基础--常用的模块(collections、time、datetime、random、os、sys、json、pickle)
collection模块: namedtuple:它是一个函数,是用来创建一个自定义的tuple对象的,并且规定了tuple元素的个数,并可以用属性而不是索引来引用tuple的某个元素.所以我们就可以 ...
- Centos无法连接无线网络解决办法
系统->管理->服务器设置->服务,将NetworkManager选项勾选,点击重启服务.然后就可以看到右上角已经有了网络连接.
- 洛谷P2835 刻录光盘 [2017年6月计划 强连通分量02]
P2835 刻录光盘 题目描述 在JSOI2005夏令营快要结束的时候,很多营员提出来要把整个夏令营期间的资料刻录成一张光盘给大家,以便大家回去后继续学习.组委会觉得这个主意不错!可是组委会一时没有足 ...
- windows无法启动MySQL服务报错1067的解决方法是怎样?
方法一: 1.打开my.ini文件,找到default-storage-engine=InnoDB这一行,把它改成default-storage-engine=MyISAM.2.删除在MySQL安装目 ...
- 解决git push、pull时总是需要你输入用户名和密码
git config --global credential.helper store之后再次执行git push 或者git pull这时候还需要输入用户名和密码 下次就不需要了
- Hdu 1068 最小路径覆盖
Girls and Boys Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- poj 2406 Power Strings(KMP入门,next函数理解)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 37685 Accepted: 15590 D ...
- 高维护性的javascript
养成良好的编码习惯,提高代码的可维护性 避免定义全局变量或函数 定义全局的变量和函数,会影响代码的可维护性.如果在页面中运行的javascript 代码是在相同的作用域里面,那就可能代码之间存在互相影 ...
- 计算机网络.{wireshark的使用实验}
---恢复内容开始--- 三种选择 1 2 3 端口镜像:交换机的某个端口,接受或者发送的数据给另外一个端口 ARP欺骗: ARP欺骗是利用ARP协议自身的不足进行的欺骗 1 执行ping命令, 2 ...
- linux 下配置多个tomcat同时运行
一个服务器上内存通常有2G或者更多,一个tomcat 运行管理这么多内存有点力不从心,并且貌似一个进程所能建立的线程数量是有限的,于是我们想要在一个服务器上运行多个tomcat.如下是摘抄自:http ...