【树论】FBI树
思路
讲这道题之前,先讲一个黑科技一般的函数:basic_string::substr(int x,int y)。
这是一个string类的成员函数,它返回一个新的string对象,该对象是从调用者的第x个字符开始往后数y个字符所组成的字符串(若x+y>this->length(),则默认截取到最后一位),这个函数可以完美的解决本题中分割字符串的问题~~~
运用递归,若参数字符串长度大于一,则对其前一半和后一半进行递归,然后分析原字符串的类别,返回F/B/I,若等于一,则分析该字符串的类别,放回F/B/I。
Code
#include <iostream>
#include <string>
using namespace std;
char FBI(string s);
int main()
{
    int n;
    cin >> n;
    string s;
    cin >> s;
    cout << FBI(s);
    return 0;
}
char FBI(string s)
{
    if (s.length() > 1)
    {
        cout << FBI(s.substr(0, s.length()/2));
        cout << FBI(s.substr(s.length()/2, s.length()/2));
    }
    bool is_1=false,is_0=false;
    for(int i=0;i<s.length();i++)
    {
        if(s[i]=='1')
            is_1=true;
        if(s[i]=='0')
            is_0=true;
    }
    if(is_1==true&&is_0==true)
        return 'F';
    if(is_1==false&&is_0==true)
        return 'B';
    if(is_1==true&&is_0==false)
        return 'I';
}
												
											【树论】FBI树的更多相关文章
- 【递归+树】FBI树
		
题目描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为BB串,全"1"串称为I串,既含"0& ...
 - Vijos 1114 FBI树
		
描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&quo ...
 - 【递归】Vijos P1114 FBI树(NOIP2004普及组第三题)
		
题目链接: https://vijos.org/p/1114 题目大意: 把01串一分为二,左半边描述当前节点左子树,右半边描述右子树,子树全为1则为I节点,全为0则为B节点,混合则为F节点,直到当前 ...
 - 创建FBI树
		
需求:数串由2^n个'0' '1'数串组成,对于一个数串,有01混合出现,则视为F,全0数串为B,全1数串为I. 将给定数串进行切割,如10010011可以用二叉树表示为 F(10010011) / ...
 - 蓝桥杯之FBI树问题
		
问题描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含"0&q ...
 - noip普及组2004 FBI树
		
FBI树 描述 我们可以把由"0"和"1"组成的字符串分为三类:全"0"串称为B串,全"1"串称为I串,既含" ...
 - Vijos P1114 FBI树【DFS模拟,二叉树入门】
		
描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树1,它的结点类型也包括F结点,B结点和I结点三种 ...
 - [题解]ybt1365:FBI树(fbi)
		
ybt1365:FBI树(fbi) [题目描述] 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串. FBI树是一种二叉树,它 ...
 - FBI树-数据结构(二叉树)
		
问题 B: [2004_p4]FBI树-数据结构 时间限制: 1 Sec 内存限制: 125 MB提交: 57 解决: 46 题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称 ...
 - C语言  ·  FBI树
		
算法训练 FBI树 时间限制:1.0s 内存限制:256.0MB 锦囊1 二叉树. 问题描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I ...
 
随机推荐
- mysql 5 长度解析
			
mysql 5 以后 都按照字符来算 不是字节 char(10)可以放10个汉字或者10个字母
 - Shell基本运算符之算术、关系运算符
			
Shell 运算符 =============================摘自菜鸟教程================================= Shell和其他编程语言一样,支持多种运算 ...
 - eclipse激活jrebel
			
1.原本jrebel已经激活了,某天突然失效了.报错如下: JRebel: ERROR Failed to obtain seat. Unable to connect to license serv ...
 - WPF  通过EventTrigger修改鼠标样式
			
难倒是不难. 除去eventtrigger之外还有别的触发器可以实现. 这个主要是难在对xaml的数据理解上. 代码实现 <Button Content=" > <Butt ...
 - 通过Filebeat把日志传入到Elasticsearch
			
学习的地方:配置文件中预先处理字段数据的用法 通过Filebeat把日志传入到Elasticsearch Elastic Stack被称之为ELK (Elasticsearch,Logstash an ...
 - GitFirstRemote
			
1.$ git ls-remote From git@github.com:Smoothfu/WPFITEMSSOURCEPRODUCTCOLLECTION.git9a6669a2e2c9e22b30 ...
 - CentOS7/Ubuntu18系统时间同步ntp(转载)
			
转自 https://blog.csdn.net/u010226454/article/details/80896959 ---centos7.2上搭建ntp服务器,并实现时间同步 对于容器编排系统 ...
 - TinyMCE编辑器图片上传扩展(base64方式),asp.net mvc5
			
编辑器上传图片一般都是先上传到服务器中,若是用户取消或忘记提交表单就产生一张废图在空间里面,时间一长就产生大量占用空间的无用图片,现在就试试提交前先用base64,提交后,在后台处理编辑器内容中的&l ...
 - Python - File - 第十八天
			
Python File(文件) 方法 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OS ...
 - itextpdf5操作表格
			
下面是一些对表格排版的常用方法,是在制作pdf的时候通过查看ipa和一些博客积累下来的. 包括,表格的宽度,对齐方式,表的页眉页脚,前后间距,padding: 单元格对齐方式,线条设置,段落于单元格之 ...