问题描述
我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。
FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下:
1)T的根结点为R,其类型与串S的类型相同;
2)若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2;由左子串S1构造R的左子树T1,由右子串S2构造R的右子树T2。
现在给定一个长度为2N的“01”串,请用上述构造方法构造出一棵FBI树,并输出它的后序遍历序列。
输入格式
第一行是一个整数N(0 <= N <= 10),第二行是一个长度为2N的“01”串。
输出格式
包括一行,这一行只包含一个字符串,即FBI树的后序遍历序列。
样例输入
3
10001011
样例输出
IBFBBBFIBFIIIFF
数据规模和约定
对于40%的数据,N <= 2;
对于全部的数据,N <= 10。
注:
[1] 二叉树:二叉树是结点的有限集合,这个集合或为空集,或由一个根结点和两棵不相交的二叉树组成。这两棵不相交的二叉树分别称为这个根结点的左子树和右子树。
[2] 后序遍历:后序遍历是深度优先遍历二叉树的一种方法,它的递归定义是:先后序遍历左子树,再后序遍历右子树,最后访问根。
【分析】字符串s的长度为1时,可以确定字符串的类型。字符串s的长度不为1时,可以由它的左子串和右子串来确定。如果左子串和右子串的类型昰一样的,那么字符串s的类型和左子串(右子串)的类型昰一样的。左子串和右子串的类型不一样,则子串s的类型就是F了。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;public class Main {public static void main(String[] args) throws IOException {BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(reader.readLine());char[] s = reader.readLine().toCharArray();reader.close();fbi(s);}private static String fbi(char[] s) {if (s.length == 1) {switch (s[0]) {case '1':System.out.print("I");return "I";case '0':System.out.print("B");return "B";default:break;}}char[] s1 = Arrays.copyOfRange(s, 0, s.length / 2);String left = fbi(s1);char[] s2 = Arrays.copyOfRange(s, s.length / 2, s.length);String right = fbi(s2);if (left.equals(right)) {System.out.print(left);return left;} else {System.out.print("F");return "F";}}
}

蓝桥杯 ALGO-27 算法训练 FBI树 Java版相关推荐

  1. 蓝桥杯:试题 算法训练 Remember the A La Mode

    蓝桥杯:试题 算法训练 Remember the A La Mode 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 Hugh Samston经营着一个为今年的ICPC世界总决赛的参 ...

  2. [Java] 蓝桥杯ALGO-27 算法训练 FBI树

    问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...

  3. Java实现 蓝桥杯VIP 算法训练 FBI树

    问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...

  4. 矩阵乘法 算法训练 试题_蓝桥杯习题集_ 算法训练 矩阵乘法

    原文: 算法训练 矩阵乘法 时间限制:1.0s   内存限制:512.0MB 问题描述 输入两个矩阵,分别是m*s,s*n大小.输出两个矩阵相乘的结果. 输入格式 第一行,空格隔开的三个正整数m,s, ...

  5. 蓝桥杯 ALGO-13 算法训练 拦截导弹 Java版

    问题描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...

  6. 蓝桥杯练习系统算法训练习题加答案java版本

    附上百度文库的链接:http://wenku.baidu.com/view/afb78d36b42acfc789eb172ded630b1c59ee9bf7 转载于:https://www.cnblo ...

  7. java蓝桥杯的题_Java蓝桥杯试题集——算法训练ALGO-116——最大的算式

    题目要求 解题思路 动态规划,今天才弄明白QAQ,借鉴了这位大佬的博客,曹磊的博客 写的很好!但是我觉得我的循环方式更容易理解嘿嘿嘿~ 首先建立如下图的数组,行数代表前几位数,列数代表有几个乘号.将第 ...

  8. 蓝桥杯练习系统—算法训练 s01串

    第一部分:题目 问题描述 s01串初始为"0" 按以下方式变换 0变1,1变01 输入格式 1个整数(0~19) 输出格式 n次变换后s01串 样例输入 3 样例输出 101 数据 ...

  9. 蓝桥杯 ALGO30 算法训练 入学考试 java版

    问题描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:" ...

最新文章

  1. SLAM算法实习生面试总结
  2. Stream流与Lambda表达式(四) 自定义收集器
  3. cmd mysql_CMD命令操作MySql数据库的方法详解
  4. fixture.detectChange如何通过Angular zone执行其异步逻辑的
  5. 过去10年技术人员有哪些状态改变?
  6. linux防火墙配置说明,Linux防火墙配置命令参数说明
  7. 洛谷 P1219 八皇后题解
  8. Consul在.Net Core中初体验
  9. Oracle数据库中IN参数个数超过1000的问题
  10. GB28181移植总结
  11. nginx源码下载、编译和安装
  12. 在html中加入文本编辑器,富文本编辑器嵌入指定html代码
  13. Kick Start Round A 2022
  14. 蓝牙打印机PHP代码,小程序调用蓝牙打印机完整代码
  15. 智安新闻丨智安网络与“南滨路国家级文化数字产业中心”就等保云业务展开成功签署战略合作协议
  16. 探探提醒对方账号异常_我告诉你探探中对方账号异常怎么回事
  17. 接口测试平台代码实现146: 平台主题-夏日清凉5
  18. coco数据集大小分类_COCO数据集使用
  19. win10 默认浏览器中找不到谷歌浏览器的解决办法
  20. 用python写情书_Fedora写给Python的情书

热门文章

  1. iPhone开发之self.的用法
  2. win 2008 64位IIS7出现数据库链接出错的解决办法
  3. List与数组的相互转换
  4. PHP常用函数之字符串处理
  5. Hibernate查询技术(2)
  6. 新型APT组织正在攻击全球的政府实体
  7. 【DEF CON】数十亿物联网设备受严重随机数生成器缺陷影响
  8. 详细分析微软“照片”应用图像编码器漏洞 (CVE-2020-17113)
  9. 详情和 PoC 发布后,谷歌匆忙修复严重的 Gmail 漏洞
  10. Zerodium 称 iOS exploit 过剩,将暂停收购且买价或下跌