洛谷 P1087 FBI树_csu_xiji的博客-程序员秘密

技术标签: DFS  模拟  

https://www.luogu.org/problemnew/show/P1087

题目描述

我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。

FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2^N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下:

1) T的根结点为R,其类型与串S的类型相同;

2) 若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串S1​构造R的左子树T1​,由右子串S2​构造RRR的右子树T2。

现在给定一个长度为2^N的“01”串,请用上述构造方法构造出一棵FBI树,并输出它的后序遍历序列。

输入输出格式

输入格式:

 

第一行是一个整数N(0≤N≤10)

第二行是一个长度为2^N的“01”串。

 

输出格式:

 

一个字符串,即FBI树的后序遍历序列。

 

输入输出样例

输入样例#1: 复制

3
10001011

输出样例#1: 复制

IBFBBBFIBFIIIFF

说明

对于40%的数据,N≤2

对于全部的数据,N≤10

noip2004普及组第3题

思路:就照着题意模拟呗,因为后序遍历是左右根的顺序,因此先访问左子树,再访问右子树,最后遍历该区间内的S串,输出根结点的值。

#include<iostream>
using namespace std;

int n;
string s;

void PostOrder(int l,int r);//左右根

int main()
{
    cin>>n;
    cin>>s;
    PostOrder(0,(1<<n)-1);
    return 0;
}

void PostOrder(int l,int r)//后序遍历 左右根
{
    if(l<r)
    {
        PostOrder(l,(l+r)/2); //按照题意 等长分开 先左子树
        PostOrder((l+r)/2+1,r);  //再右子树
    }
    int t1=1,t2=1;
    for(int i=l;i<=r;i++)
    {
        if(s[i]=='0')
            t2=0;
        else if(s[i]=='1')
            t1=0;
    }
    if(t1)
        cout<<"B";
    else if(t2)
        cout<<"I";
    else
        cout<<"F";
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xiji333/article/details/87558603

智能推荐

32为什么还有 kill 不掉的语句?_为什么还有kill不掉的语句?_周杰伦本人的博客-程序员秘密

文章目录32 | 为什么还有 kill 不掉的语句?收到 kill 以后,线程做什么?另外两个关于客户端的误解小结上期问题时间32 | 为什么还有 kill 不掉的语句?在 MySQL 中有两个 kill 命令:一个是 kill query + 线程 id ,表示终止这个线程中正在执行的语句;一个是 kill connection + 线程 id ,这里 connection 可缺省,表示断开这个线程的连接,当然如果这个线程有语句正在执行,也是要先停止正在执行的语句的。不知道你在使用 MySQL

9 个小而经典的数据集_算法channel的博客-程序员秘密

Python与算法社区已有446篇原创,干货满满三步加星标010203三步加星标你好,我是 zhenguo经常有粉丝问我,手上有没有数据集,几M大小的,尽量真实点的。今天我为你推...

跨服务器上传图片_HCW881007的博客-程序员秘密

1,背景:程序在A服务器上,图片在B图片服务器上2,客户端上传文件到A服务器上,A服务器,在通过流的方式,将图片发送给B服务器上服务器A代码   public class UploadImage : IHttpHandler    {        public void ProcessRequest(HttpContext context)       

GIT切换分支的简单操作_git bash here 分支_听者listener的博客-程序员秘密

切换到要操作的项目文件夹或进入本地项目文件然后右键打开git bash here 命令框切换到要操作的项目文件夹命令cd  ProjectPath查看项目分支(包括本地和远程)执行命令git branch -a删除本地分支 执行命令git branch -d 分支名删除远程分支 执行命令git push origin –delete 分支名 切换分...

关于PCIe M.2 SATA mSATA_向阳日的博客-程序员秘密

接口:PCIe M.2 SATA mSATA总线:SATA PCI-E 协议: NVMe,AHCI和IDE是传输协议(语言)。 它们运行在诸如PCIe或SATA(口头,书写)之类的传输接口之上。a) 三星 850 EVO M.2 接口,SATA 总线,AHCI 协议b) 三星 SM951 M.2 接口,PCIe 总线,AHCI 协议c) 三星 SM951 M.2 接口,PCIe 总线,N...

信息学奥赛一本通 1178:成绩排序 | OpenJudge NOI 1.10 03:成绩排序_君义_noip的博客-程序员秘密

【题目链接】ybt 1178:成绩排序OpenJudge NOI 1.10 03:成绩排序【题目考点】1. 结构体 排序【君义精讲】排序算法2. 多关键字排序方法1:将多关键字的排序条件整合为单一排序条件方法2;使用稳定的排序算法进行多趟排序【解题思路】对结构体对象排序,比较的是成员变量,交换的是对象【题解代码】解法1:将多关键字的排序条件整合为单一排序条件整合成的排序条件为:分数更高,或分数相同且名字字典序小,则排在前面。冒泡排序#include&lt;bits/stdc

随便推点

ArrayList的基本实现_arraylist的实现_leo邓的博客-程序员秘密

##ArrayList的基本实现1、通过Object类型的数组来实现,所以数组中需要存储基本类型数据的时候需要使用包装类```javapublicclassArrayList&lt;E&gt;extendsAbstractList&lt;E&gt;implementsList&lt;E&gt;,RandomAccess,Cloneable,java.io.Serializable{privatestaticfinall...

【问题集萃】N007:华为云ECS安装Redis启动后客户端无法访问_黑白猿的博客-程序员秘密

华为云ECS安装Redis后在服务器端验证能够正常启动。但是通过本机的客户端工具RedisDesktopManager访问时提示无法连接。需要检查如下两项:CentOS防火墙华为云的安全规则登录华为云网站,找到对应的ECS服务器,添加允许访问Redis端口的过滤规则。开启防火墙。[[email protected] redis]# firewall-cmd --query-port=637...

vue-router 源码和动态路由权限分配_frontend_frank的博客-程序员秘密

本文首发于政采云前端团队博客:浅析 vue-router 源码和动态路由权限分配https://www.zoo.team/article/vue-router-analysis背景上月立...

Java创建表格_无名氏*的博客-程序员秘密

要显示JTable组件(需要用到)TableModel接口(需要下面这个类才能实现)DefaultTableModel类主要步骤:创建表格模型对表格模型进行操作将表格模型添加到表格JTable中将JTable添加到滚动面板上(JScrollPane) //第一步:创建表格模型 DefaultTableModel tablemodel = new DefaultTableMo...

Caused by: java.sql.SQLSyntaxErrorException_BackgroundHero的博客-程序员秘密

错误截图错误分析遇到这种sql语法错误,可以直接将sql语句复制到数据库中看看把?改成数据可以更好的分析报错原因错误原因这里数据库里有个字段group与sql语句里的关键字重名了所以发生报错解决方案修改字段名即可修改后...

(踩坑)神经网络下载MNIST报错,ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接_SlowToFast的博客-程序员秘密

在做莫烦的神经网络mnist手写字体数据分类的时候,遇到了bugConnectionAbortedError: [WinError 10053]在网上找了一天也没找到,其他人报错基本上都是写爬虫的时候的错误,我在想可能还是网络的问题,下载mnist数据包的源地址可能速度并不快,在网上找了下载mnist时timeout的解决方法,解决了bug在错误信息里面找到mnist,py文件,点进去:然后修改最上面的mnist数据来源:把原来的DEFAULT_SOURCE_URL = ‘https://st

推荐文章

热门文章

相关标签