题目描述

我们可以把由“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树的后序遍历序列。

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
bool x[2000];
int y[5000],a,b,c,d,e,f,g,m,n,k,cnt,bnt,dnt,mmp;
char z,z1[20];
int cot(int p)
{
if(y[p]==3)
{
cout<<"F";
}
if(y[p]==2)
{
cout<<"I";
}
if(y[p]==1)
{
cout<<"B";
}
}
int print(int l)
{
if(mmp==g)
{
return 0;
}
if(y[l*2]==0)
{
cot(l);
mmp++;
y[l]=0;
if(l%2==0)
{
print(l+1);
}
else
{
print(l/2);
}
}
else
{
print(l*2);
}
}
int main()
{
cin>>m;
n=1;
k=1;
for(a=1;a<=m;a++)
{
n=n*2;
k=k+n;
}
g=k;
f=n;
for(a=1;a<=n;a++)
{
cin>>z;
if(z=='0')
{
x[a]=0;
}
else
{
x[a]=1;
}
} // for(a=1;a<=n;a++)
// {
// cout<<x[a];
// }
for(a=1;a<=n;a++)
{
if(x[a]==1)
{
cnt=1;
}
else
{
bnt=1;
}
} if(cnt==1&&bnt==1)
{
y[1]=3;
}
else
{
if(cnt==1)
{
for(a=1;a<=k;a++)
{
cout<<"I";
}
return 0;
}
if(bnt==1)
{
for(a=1;a<=k;a++)
{
cout<<"B";
}
return 0;
}
}
cnt=0;
bnt=0;
dnt++; // g=n;
for(a=1;a<=m;a++)
{
n=n/2;
k=f/n;
for(b=1;b<=k;b++)
{
for(c=(b-1)*n+1;c<=n*b;c++)
{
if(x[c]==1)
{
cnt=1;
}
else
{
bnt=1;
}
}
dnt++;
if(cnt==1&&bnt==1)
{
y[dnt]=3;
}
else
{
if(cnt==1)
{
y[dnt]=2;
}
if(bnt==1)
{
y[dnt]=1;
}
}
cnt=0;
bnt=0;
}
} n=f/2;
print(n);
return 0;
// gets(z1);
// for(a=1;a<=g;a++)
// {
// if(y[a]==3)
// {
// cout<<"F";
// }
// if(y[a]==2)
// {
// cout<<"I";
// }
// if(y[a]==1)
// {
// cout<<"B";
// }
// }
// system("pause");
return 0; }

FBI树的更多相关文章

  1. Vijos 1114 FBI树

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

  2. 【递归】Vijos P1114 FBI树(NOIP2004普及组第三题)

    题目链接: https://vijos.org/p/1114 题目大意: 把01串一分为二,左半边描述当前节点左子树,右半边描述右子树,子树全为1则为I节点,全为0则为B节点,混合则为F节点,直到当前 ...

  3. 创建FBI树

    需求:数串由2^n个'0' '1'数串组成,对于一个数串,有01混合出现,则视为F,全0数串为B,全1数串为I. 将给定数串进行切割,如10010011可以用二叉树表示为 F(10010011) / ...

  4. 蓝桥杯之FBI树问题

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

  5. noip普及组2004 FBI树

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

  6. Vijos P1114 FBI树【DFS模拟,二叉树入门】

    描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树1,它的结点类型也包括F结点,B结点和I结点三种 ...

  7. [题解]ybt1365:FBI树(fbi)

    ybt1365:FBI树(fbi) [题目描述] 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树,它 ...

  8. FBI树-数据结构(二叉树)

    问题 B: [2004_p4]FBI树-数据结构 时间限制: 1 Sec  内存限制: 125 MB提交: 57  解决: 46 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称 ...

  9. C语言 · FBI树

    算法训练 FBI树   时间限制:1.0s   内存限制:256.0MB        锦囊1 二叉树. 问题描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I ...

  10. FBI树(第一次做建树题)

    试题来源 NOIP2004 普及组 问题描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树,它的结 ...

随机推荐

  1. Session&Cookie 简介及使用

    Cookie cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 或其它语言来创建和取回 cookie ...

  2. 位运算(5)——Power of Two

    判断一个整数是不是2的幂. 关键是弄明白2的幂的二进制形式只有一个1. public class Solution { public boolean isPowerOfTwo(int n) { int ...

  3. 科学计算基础包——Numpy

    一.NumPy简介 NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础. 1.NumPy的主要功能 (1)ndarray:一个多维数组结构,高效且节省空间. (2)无需 ...

  4. css居中那些事

    一.css垂直居中 1.line-height(适用于单行文本居中) eg:  html:<p class="wordp">123</p>- css: .w ...

  5. 初入门 HTML

    ---恢复内容开始--- 1.h标签(标题标签) h1~h62.br标签(换行标签) <br/>3.hr标签(水平线标签) <hr/>4.strong(加粗) em(倾斜)5. ...

  6. 22_AOP_切面——静态切面

    [Spring AOP 如何定位连接点] 1.增强提供了连接点的方位信息:如织入到方法前面.后面等. 2.切点描述的是织入到哪些类的哪些方法上. [切点] Spring通过org.springfram ...

  7. django-1-应用开发基本套路

    Django 开发基本流程 创建项目 创建应用 修改配置文件 设计数据模型 后台管理注册 编写业务视图 编写模板文件 设置URL 访问测试/调试 部署上线 创建项目 django-admin star ...

  8. spring框架入门day02

    0. 绪论 在第二天的学习中的学习JdbcTemplate之前,想要下载最新版本的mysql server8.0.11 结果在将所有的东西配置好后,发现报错, · Establishing SSL c ...

  9. Flume的load-balance、failover

    配置flume集群参考https://www.cnblogs.com/jifengblog/p/9277793.html load-balance负载均衡 介绍 负载均衡是用于解决一台机器(一个进程) ...

  10. OA环境搭建及卸载操作帮助文档

    目    录 项目介绍 JDK的安装与验证 1.安装JDK 2.添加环境变量 3.验证JDK MySql的安装与验 1.安装MySql 2.登录Mysql帐号 3.导入数据库 Tomcat的安装与验证 ...