P1440 FBI树

2024-01-21 10:58
文章标签 fbi p1440

本文主要是介绍P1440 FBI树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

描述 Description
我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。
    FBI树是一种二叉树1,它的结点类型也包括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树,并输出它的后序遍历2序列。
输入格式 InputFormat
输入的第一行是一个整数N(0<=N<=10),第二行是一个长度为2^N的“01”串。
输出格式 OutputFormat
输出包括一行,这一行只包含一个字符串,即FBI树的后序遍历序列。

 

解题思路:

  先模拟建立二叉树,之后后序遍历。

代码:

#include <stdio.h>
#include <string.h>
#define N 1050
char str[N];
typedef struct LNode
{
char f;
LNode *l,*r;
}LNode,*LinkList;
LinkList root;
int Pan(int start,int end)
{
int flag1=1,flag2=1,flag3=1;
for(int i=start;i<end;i++)
{
if(str[i]!='0') flag1=0;
if(str[i]!='1') flag2=0;        
}
if(flag1) return 1;
else if(flag2) return 2;
else return 3;
}
void Search(int start,int end,int flag,LinkList &L)
{
//建立二叉树;
if(start==end) L=NULL;
else
{    
L=new LNode;/*char m=str[end];str[end]='\0';
strcpy(L->f,&str[start]);str[end]=m;*/
int p=Pan(start,end);
if(p==1) L->f='B';
else if(p==2) L->f='I';
else L->f='F';
/*int q=end;*/
/*end=end-(end-start+1)/2;*/
int len=end-start;
Search(start,end-(len+1)/2,1,L->l);//建立左边的;
/*start=end+1;end=q;*/
Search(start+(len+1)/2,end,2,L->r);//建立右边的;
    }
}
void Hou(LinkList L)
{
if(L)
{
Hou(L->l);
Hou(L->r);
printf("%c",L->f);
}
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
scanf("%s",str);int len=strlen(str);
Search(0,len,0,root);
Hou(root);
printf("\n");
}
return 0;
}

 

 

 

这篇关于P1440 FBI树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/629299

相关文章

FBI 数据泄露!黑客组织公布全部数据

作者:HikkI-Chan 日期:2024年8月28日 近日,著名的BreachForums社区内,一名黑客发布了一个名为“OpPriser v1.0”的文件包。此文件包据称包含美国联邦调查局(FBI)及其他政府机构的敏感信息,黑客组织声称这些数据是通过“Operation Priser”行动所获取的。 行动概述 根据发布者HikkI-Chan的描述,“Operation Priser”是

2004NOIP普及组真题 3. FBI树

线上OJ 地址: [04NOIP普及组] FBI树 本题的意思是:给定一个 01字符串 (对应一棵完全二叉树的最后一层叶子节点),将树的每一个节点的值用字母“F、B、I”表示。规则(如下图所示)为: 1、如果树的左右子树的叶子节点都是0,则根节点为B; 2、如果树的左右子树的叶子节点都是1,则根节点为 I; 3、如果树的左右子树的叶子节点有0也有1,则根节点为 F; 核心思想

P1087 [NOIP2004 普及组] FBI 树(dfs构造二叉树)

题目链接:P1087 [NOIP2004 普及组] FBI 树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:  根据题目要求,我们可以知道这是一个构造二叉树,后续遍历的题目  后续遍历先遍历树的左节点,再右节点,最后根节点 按照规则 左右跟 -----> IBFBBBFIBFIIIFF AC代码:  #include<iostr

NOIP 2004 普及组 sdnu 1168.FBI树

原题链接: http://210.44.14.31/problem/show/1168 考查树的构造和后序遍历。 代码如下: #include<iostream>#include<cmath>#include<string>#include<cstring>using namespace std;typedef struct node{char fbi;str

洛谷 P1087 [NOIP2004 普及组] FBI 树

本文由Jzwalliser原创,发布在CSDN平台上,遵循CC 4.0 BY-SA协议。 因此,若需转载/引用本文,请注明作者并附原文链接,且禁止删除/修改本段文字。 违者必究,谢谢配合。 个人主页:blog.csdn.net/jzwalliser 题目 洛谷 P1087 [NOIP2004 普及组] FBI 树 [NOIP2004 普及组] FBI 树 题目描述 我们可以把由 0

CISA、FBI、EPA 为水系统运营商提供网络安全指南

经过一番停顿后,美国联邦机构发布了指导意见,帮助供水和废水处理系统运营商更好地应对网络攻击,这是威胁行为者越来越多地针对该行业的重要一步。 该文件由环境保护局 (EPA)、联邦调查局 (FBI) 以及网络安全和基础设施安全局 (CISA) 共同编写,涉及从提高系统弹性到检测、分析和遏制网络事件发生等各个方面。 它还提供了事件发生后该怎么做的提示,包括保留证据、收集数据以及分析发生的情况和他

FBI序列

【问题描述】 两伙外星人策划在未来的XXXX年侵略地球,侵略前自然要交换信息咯,现在,作为全球保卫队队长,你截获了外星人用来交换信息的一段仅由’F’,’B’,’I’,’O’,组成的序列,为了保卫地球和平,为了使家园不受破坏,你要机智地破解密码,勇敢地迎击外星人!记住,你不是一个人在战斗!你不是一个人!你的背后是千千万万的地球人! 【输入文件】 一组仅由’F’,’B’,’I’,’O’,组成的序

FBI紧急警告:黑客利用开源SonarQube实例窃取政府和企业源代码

聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 美国联邦调查局 (FBI) 发布紧急警告称,黑客正在通过暴露在互联网且不安全的 SonarQube 实例中窃取美国政府和企业的信息。 SonarQube 是一款开源的自动化代码质量审计和静态分析平台,用于发现项目中的bug 和安全漏洞,支持27种语言。 自2020年4月起,易受攻击的 SonarQube 服务器就被用于获取、提取

FBI拟斥10亿建全球最大公民特征识别数据库

近日, 美国 联邦调查局(FBI)对外宣称,联邦调查局正在着手开发一个十亿美元的项目,计划筹建全球最大的公民特征识别 数据库 .届时,联邦调查局就可以快速、准确地识别出犯罪嫌疑人、国外间谍或 恐怖 分子等.世界上最大的公民特征识别数据库被命名为“识别下一代”,录入的信息包括人的眼虹膜形态、脸形、指纹、伤疤甚至包括某些人的走路姿势或者言谈话语习惯等.建立这一数据库的目的旨在扩充现有数据库的生物资料信

大数据24小时:昔日对头“握手言和”,苹果将免费培训FBI收集苹果设备数据

【数据猿导读】 苹果与FBI“握手言和”,并传授其收集苹果设备数据方法;ofo与摩拜同天宣布:将向政府开放共享单车数据;百度成立数据可视化实验室,并发布深度学习可视化平台 Visual DL……以下为您奉上更多大数据热点事件 编辑 | abby 官网 | www.datayuan.cn 微信公众号ID | datayuancn