洛谷 1087——FBI树

题目描述

我们可以把由“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构造R的右子树T2。

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

输入输出格式

输入格式:
第一行是一个整数N(0 <= N <= 10),第二行是一个长度为2^N的“01”串。

输出格式:
包括一行,这一行只包含一个字符串,即FBI树的后序遍历序列。

输入输出样例

输入样例#1:
3
10001011
输出样例#1:
IBFBBBFIBFIIIFF
说明

对于40%的数据,N <= 2;

对于全部的数据,N <= 10


其实,题目大意就是二分出一个区间,找到这个区间所代表的字母(“F”,”B”,”I”)
从题意中中,我们以得知此题用二分答案
递归二分后,在一个循环统计“0”,“1”的个数,最后判断一下就行了


代码如下:

#include <cstdio>
#include <cstring>
using namespace std;
int const Maxn=10000;
int n,a1[Maxn],l;
char a[Maxn];
void work(int l,int r)
{if(l<r){work(l,l+(r-l)/2);work(1+l+(r-l)/2,r);}int tmp,tmp1;tmp=tmp1=0;for(int i=l;i<=r;i++) if(a1[i])tmp1++; else tmp++;if(!tmp) printf("I");else if(!tmp1) printf("B");else printf("F");
}
int main()
{scanf("%d",&n);scanf("%s",&a[1]);l=strlen(&a[1]);for(int i=1;i<=l;i++)a1[i]=a[i]-'0';work(1,l);return 0;
}

转载于:https://www.cnblogs.com/Comfortable/p/8412300.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/488474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python开发web使用什么工具_常用的Python web开发工具盘点

www.oldboyedu.com老男孩IT教育&#xff0c;只培养技术精英常用的Python web开发工具盘点Python是一门动态、面向对象语言。其最初就是作为一门面向对象语言设计的&#xff0c;并且在后期又加入了一些更高级的特性。除了语言本身的设计目的之外&#xff0c;Python标准库也是值得…

java的add方法的使用_Java HashSet add()方法与示例

HashSet类add()方法add()方法在java.util包中可用。当尚不存在给定元素时&#xff0c;使用add()方法将其插入此HashSet中&#xff0c;否则它将忽略它并返回false。add()方法是一种非静态方法&#xff0c;只能通过类对象访问&#xff0c;如果尝试使用类名称访问该方法&#xff0…

国自然:信息科学部优先发展领域及主要研究方向(含跨科学部)

来源&#xff1a;科奖多媒体中心“十三五”期间&#xff0c;通过支持我国优势学科和交叉学科的重要前沿方向&#xff0c;以及从国家重大需求中凝练可望取得重大原始创新的研究方向&#xff0c;进一步提升我国主要学科的国际地位&#xff0c;提高科学技术满足国家重大需求的能力…

缓冲区不能为空。 参数名: buffer_Java Nio 之Buffer

了解历史在 java1.4之前java io ,最核心的点是在"流"上&#xff1b;java io 的两大基石InputStream和OutputStream 也就是大家耳熟能祥的输入流和输出流,通过这个两个基石可以实现从外界读取数据到内存&#xff0c;以及将内存中数据写到外界&#xff1b;但是输入流和…

怎样把java项目转换成web项目_Eclipse中将Java项目转换成Web项目的方法

注意&#xff1a;0.点击Further configuration available&#xff0c;修改eclipse默认的WebContent 并修改为WebRoot&#xff0c;勾选Generate web.xml deployment descriptor1.需要把web 工程的版本改成2.5本地项目&#xff1a;struts2-3其中的无需修改的文件&#xff1a;org.…

新增方法

//新增方法addRecord : function() {var me this;var height 500; //取得当前屏幕高度var width 500; //取得当前屏幕宽度var content Ext.create("BeidaSoft.SFJCGL.rcjwgl.bdgl.BdglAddPanel", {}); var win new Ext.Window({layout:fit,width:wi…

机器人行业疫情之下的“危”与“机”

来源&#xff1a;腾讯网口罩脱销令口罩生产线炙手可热&#xff0c;医护人士紧缺令送药机器人走俏&#xff0c;站场监控让自动测体温机器人成为网红&#xff0c;武汉街头配送出现物流机器人身影……新型冠状病毒感染肺炎疫情&#xff0c;给机器人和智能制造行业带来了意想不到的…

线性查找python_Python实现搜索算法的实例代码

将数据存储在不同的数据结构中时&#xff0c;搜索是非常基本的必需条件。最简单的方法是遍历数据结构中的每个元素&#xff0c;并将其与您正在搜索的值进行匹配。这就是所谓的线性搜索。它效率低下&#xff0c;很少使用&#xff0c;但为它创建一个程序给出了我们如何实现一些高…

mysql 二进制日志变化_MySQL运维之二进制日志

MySQL二进制日志里保存会造成或可能造成数据变化的SQL语句。通过二进制日志可以完成如实时异地容灾备份、读写分离、数据恢复等功能。下面&#xff0c;我们一起来看看Mysql二进制日志。开启bin-log日志Mysql默认是没有开启bin-log日志的&#xff0c;需要我们自己去添加配置。lo…

Python 模块(二)

1 logging 模块 logging有两种的配置的方式&#xff0c;configure、logger 1.1 config方式 import logging日志的配置&#xff1a;config模式 只能选择在屏幕或者在文件输出logging.basicConfig(levellogging.DEBUG,format%(asctime)s [%(lineno)s] %(message)s ,filenamelog.t…

影响和改变世界的50件发明专利,猜下中国有几个?

来源&#xff1a;国家知识产权局创新创造未来&#xff0c;专利改变世界。最近几十年究竟有哪些专利真正改变了世界呢&#xff1f;国家识产权局选取了一批具有历史意义的、促进社会经济发展的、对人类社会产生重要影响的中外专利。未来智能实验室的主要工作包括&#xff1a;建立…

js 自动分配金额_JS内存图以及原型与原型链

内存以及内存图在JS中&#xff0c;每一个数据都需要一个内存空间。内存空间又被分为两种&#xff0c;栈内存(stock)与堆内存(heap)。JS内存空间分为栈(stack)、堆(heap)、池(一般也会归类为栈中)。 其中栈存放变量&#xff0c;堆存放复杂对象&#xff0c;池存放常量。JS中的基础…

全球首个AI宇宙模拟器不仅有6亿光年宽度,还“自行”跑出了暗物质

来源&#xff1a;大数据文摘《创世纪》里&#xff0c;神用7天创造了这个世界。而现在&#xff0c;你可能也有机会体验这个过程&#xff0c;创造一个属于自己的宇宙。Space Engine 0.990版本在Steam平台发售不到一天&#xff0c;近300测评全部为最高评价。之后&#xff0c;还得到…

一个HelloWorld网站

一个HelloWorld网站 点击直达 介绍 很多技术在里面都有很多的HelloWorld 当初是我在windows下使用redis在官方文档没有找到入门的资料发现的 个人理解 作为HelloWorld是不错的,当然还有一些东西值得看,参考用过直接上某个技术的官方文档。 转载于:https://www.cnblogs.com/bean…

js 延迟几秒执行_深入研究 Node.js 的回调队列

// 每日前端夜话 第365篇// 正文共&#xff1a;3000 字// 预计阅读时间&#xff1a;10 分钟队列是 Node.js 中用于有效处理异步操作的一项重要技术。在本文中&#xff0c;我们将深入研究 Node.js 中的队列&#xff1a;它们是什么&#xff0c;它们如何工作(通过事件循环)以及它们…

java官方 jax rs_jboss7 Java API for RESTful Web Services (JAX-RS) 官方文档

原文&#xff1a;https://docs.jboss.org/author/display/AS7/JavaAPIforRESTfulWebServices(JAX-RS)ContentTutorial OverviewThis chapter describes the Java API for RESTful web services (JAX-RS, defined in JSR331). RESTEasy is an portable implementation of this s…

数据结构-王道2017-第5章 图

1.图的基本概念 1&#xff09;图的定义 图G由顶点集V和边集E组成&#xff0c;记为G(V,E),其中V(G)表示图G中定点的有限非空集&#xff1b;E(G)表示图G中顶点之间的关系&#xff08;边&#xff09;集合。V{v1,v2,..,vn},用|V|表示图G中顶点的个数&#xff0c;也称为图G的阶&…

python两个参数or循环_python学习笔记(四)、条件、循环及其他语句

1 再谈print和import1.1 打印多个参数print 能够同时打印多个表达式&#xff0c;并且能自定义分隔符。如下&#xff1a;print(a,b,c)  ——> a b cprint(a,b,c,sep"_")  ——> a_b_c1.2 import导入模块时&#xff0c;能够给导入的模块取一个别名(相对于生活…

研究揭示大脑在工作记忆中存储信息的神经机制

来源&#xff1a;中国科学院脑科学与智能技术卓越创新中心&#xff08;神经科学研究所&#xff09;3月5日&#xff0c;《神经元》期刊在线发表了题为《无颗粒岛叶皮层瞬时性神经元活动调控学习新任务时的工作记忆存储》的研究论文。该研究由中国科学院脑科学与智能技术卓越创新…

[Jmeter] 基本使用的总结

转载于:https://www.cnblogs.com/mytianying/p/6793461.html