6-17 看图写树 uva10562

非常好的dfs题  有很多细节

关于‘ ’  ‘0’  ’\n‘  的处理  他们都属于isspace函数

其中

while(buf[x+2][i]==‘-‘&&buf[x+3][i]!=‘\0‘)  很重要    &&后面去掉的话会自动以\0为目标进行dfs  得到答案不止一行!!!

判断不是空格用!isspace()

fgets用于读取行 在string不合适的时候  并且同样会读取换行符

if(n){ for(int i=0;i<strlen(buf[0]);i++)
{
if(buf[0][i]!=‘ ‘){dfs(0,i);break;}
}

}    //如果去掉if(n)    会错    debug了好久!!!

#include<bits/stdc++.h>
using namespace std;

char buf[1000][1000];

int n;

void dfs(int x,int y)
{
    printf("%c(",buf[x][y]);
    if(buf[x+1][y]==‘|‘)
    {
        int i=y;
        while((i-1)>=0&&buf[x+2][i-1]==‘-‘)i--;

        while(buf[x+2][i]==‘-‘&&buf[x+3][i]!=‘\0‘)//11111
        {
            if(!isspace(buf[x+3][i]))dfs(x+3,i);
            i++;
        }

    }
    printf(")");

}

int main()
{

     int cas;cin>>cas;getchar();
    while(cas--)
    {
         memset(buf,‘ ‘,sizeof(buf));

        int i=0; n=0;

        for(;;){
            fgets(buf[n],210,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");
   }
    return 0;
}

原文地址:https://www.cnblogs.com/bxd123/p/10312098.html

时间: 2024-08-06 05:13:15

6-17 看图写树 uva10562的相关文章

看图写树Uva-10562

题意大概: 将多叉树转化为括号表达式. 每个节点除了"-"."|".和空格以外的其它字符表示. 每个非叶节点的正下方总会有一个"|"字符,然后下方是一排"-"字符,恰好覆盖所有的子节点的上方. 单独的一行"#"为数据结束标记. 代码如下: #include<iostream> #include<cstdio> #include<cstring> using namespa

UVa 10562 看图写树

题目:题目就是给出一幅ASCII字符构成的树的图,然后转换成由字符括号构成的树的表示形式.可以知道,树有孩子结点的话,正下方会有一个字符 '|' ,紧接着会有一个覆盖所有孩子结点的字符序列"-------",然后其下就是孩子结点. 思路:先将所有数据读下来.然后递归处理,给定一个左右边界,在该边界内逐个检查字符,如果是结点字符,则判断有无孩子等后续处理. 注意:因为每行会有空格,所以不能用scanf输入,换成fgets的话会保留有换行符(当然,可以进行处理或后续判断),这里使用的是ge

UVa 10562 Undraw the Trees 看图写树

转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 题目大意: 题目传送门:UVa 10562Undraw the Trees 给定字符拼成的树,将这些树转换成特定的括号表示的树 思路: 首先,观察样例,可以发现就是先序遍历的顺序,因此可以确定dfs 但是,还有几个地方需要考虑: 同一级的结点,在同一级的括号中 由于顺序满足先序遍历,因此不需要存储树,更不需要构建树,直接在遍历过程中输出即可. 空树:即输入为:# 时的树的处理,我不建议在此进行

纯粹的 K12 精髓:从马列主义角度分析如何教孩子看图写话

太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 摘自百度百科<辩证唯物主义> 孩子对事物的认识,也是遵从这个过程的. 第一次看一幅图,只能看到一两个人物,第二遍再看,就又多一些: 当

基于torch学汪峰写歌词、聊天机器人、图像着色/生成、看图说话、生成字幕

手把手教你基于torch玩转 学汪峰写词.自动聊天机器人.图像着色.图像生成.看图说话.生成字幕 作者:骁哲.李伟.小蔡.July.说明:本教程出自七月在线开发/市场团队.及七月在线5月深度学习班学员之手,有何问题欢迎加Q群交流:472899334.时间:二零一六年十月十二日. 前言 我们教梵高作画的教程发布之后,国庆7天,上百位朋友一一陆续动手尝试,大有全民DL.全民实验之感.特别是来自DL班的小蔡同学,国庆7天连做10个开源实验,并把这10个实验的简易教程(含自动聊天机器人)发布在社区上:h

DL4NLP —— 看图说话(Image Caption)任务的论文笔记(一)评价指标和NIC模型

看图说话(Image Caption)任务是结合CV和NLP两个领域的一种比较综合的任务,Image Caption模型的输入是一幅图像,输出是对该幅图像进行描述的一段文字.应用场景:比如说用户在拍了一张照片后,利用Image Caption技术可以为其匹配合适的文字,方便以后检索或省去用户手动配字:此外它还可以帮助视觉障碍者去理解图像内容.类似的任务还有Video Caption,输入是一段视频,输出是对视频的描述. (一)任务描述 目前来说,Image Caption任务主要集中在英文上,数

看图理解单链表的反转

如何把一个单链表进行反转? 方法1:将单链表储存为数组,然后按照数组的索引逆序进行反转. 方法2:使用3个指针遍历单链表,逐个链接点进行反转. 方法3:从第2个节点到第N个节点,依次逐节点插入到第1个节点(head节点)之后,最后将第一个节点挪到新表的表尾. 方法4:   递归(相信我们都熟悉的一点是,对于树的大部分问题,基本可以考虑用递归来解决.但是我们不太熟悉的一点是,对于单链表的一些问题,也可以使用递归.可以认为单链表是一颗永远只有左(右)子树的树,因此可以考虑用递归来解决.或者说,因为单

Chrome插件开发 小插件-acfun看图 3

插件的安装与使用. 写好插件后,通过chrome开发者模式加载插件. 点击加载扩展程序,选择插件的文件夹即可在chrome中加载插件. 然后更改自己的插件后点刷新进行更新,如果有错误,chrome会报错. 要想发布自己的插件就要先交钱,这跟steam上的绿光,以及ios应用等等都一样. 全部: ACfun看图

架构设计分享之权限系统(看图说话)

前面一篇文章<最近架构随想>,我提到架构设计的一些构想,其实也是对之前项目经验的一些归纳及总结.今天我们就以权限系统作为切入点,谈一谈怎么设计权限系统以及怎么做到系统具有以下特性: Organized:如果系统组织比较好,可以起到事半功倍的效果. Encapsulated:对功能,结构,数据进行有效的封装,会使系统维护变得更加容易. Reusable:对常用功能以及组件进行有效的封装,可以使系统变得结构清晰且方便维护. Extensible:在设计系统的时候,如果很好的遵守OO的设计理念(OO