文章目录

  • 题目
  • 思路
  • AC代码
  • 后言

题目

添加链接描述

思路

其实这个树很简单,就是一个满二叉树,我们利用父亲结点是i左结点是2* i右节点是2*i+1来存储。就与data信息是字符串所以我利用了一个结构体Node来存储相应信息。存储之后还要对剩余的叶子结点进行处理,就是将叶子结点作为data存入结构体中,便于写递归。

AC代码

#include <bits/stdc++.h>
using namespace std;struct Node {string left, right, data;
} I[3000];void creat_tree(string s, int node) {if (s.size() == 1)return;I[node].data = s;I[node].left = s.substr(0, s.size() / 2);creat_tree(I[node].left, node * 2);I[node].right = s.substr(s.size() / 2);creat_tree(I[node].right, node * 2 + 1);
}string res(string s) {if (s.find("0") == -1)return "I";else if (s.find("1") == -1)return "B";elsereturn "F";
}void dfs(int start, int end) {if ((I[start].data).size() != 1) {dfs(2 * start, 2 * start + (end - start) / 2);dfs(2 * start + 1, 2 * start + 1 + (end - start) / 2);}cout << res(I[start].data);
}int main() {int N;cin >> N;string s;cin >> s;if (N == 0) {cout << res(s);return 0;}creat_tree(s, 1);int root = pow(2, N);for (int i = 1; i < root; ++i) {if ((I[i].data).size() == 2) {I[2 * i].data = I[i].left;I[2 * i + 1].data = I[i].right;}}dfs(1, root);
}

后言

泪目啊家人们,一个多月终于对递归开了点窍!!!!

洛谷P1087 FBI树相关推荐

  1. 洛谷 1087——FBI树

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

  2. 信息学奥赛一本通 1365:FBI树(fbi) | 1928:【04NOIP普及组】FBI树 | 洛谷 P1087 [NOIP2004 普及组] FBI 树

    [题目链接] ybt 1365:FBI树(fbi) ybt 1928:[04NOIP普及组]FBI树 洛谷 P1087 [NOIP2004 普及组] FBI 树 [题目考点] 1. 二叉树 [解题思路 ...

  3. Luogu P1087 FBI树

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

  4. 洛谷 P3373 线段树2

    洛谷 P3373 线段树2 mul和pls更新某区间左右子树sum的时候,别忘了回头更新这个区间的sum 只有在传递给子序列之后,父序列的lz标记才能清零.其他时候,lz标记只增不减 #include ...

  5. 洛谷P3373线段树

    洛谷P3373 线段树模板题,主要对懒标的处理要求比较高. 有三种操作: 区间加法 区间乘法 区间求和查询 tips:我们对一个区间进行乘k操作的时候,他之前可能存在加法lazy还没pushdown, ...

  6. 通过“FBI树”复习二叉树算法(洛谷P1087题题解,Java语言描述)

    题目要求 P1087题目链接 分析 所谓的"FBI树",其实就是一种二叉树,最后的结果也无非就是二叉树的后序遍历序列. 所以,考察的知识点就是--二叉树基本算法的灵活运用. 本题关 ...

  7. P1087 FBI树

    题目描述 我们可以把由"000"和"111"组成的字符串分为三类:全"000"串称为BBB串,全"111"串称为I串,既 ...

  8. 洛谷P3252 [JLOI2012]树

    题目描述 在这个问题中,给定一个值S和一棵树.在树的每个节点有一个正整数,问有多少条路径的节点总和达到S.路径中节点的深度必须是升序的.假设节点1是根节点,根的深度是0,它的儿子节点的深度为1.路径不 ...

  9. ●洛谷P3688 [ZJOI2017]树状数组

    题链: https://www.luogu.org/problemnew/show/P3688 题解: 二维线段树. 先不看询问时l=1的特殊情况. 对于一个询问(l,r),如果要让错误的程序得到正确 ...

最新文章

  1. 基于python的压测工具_Python Locust性能测试简介及框架实践
  2. ATSS : 目标检测的自适应正负anchor选择,很扎实的trick | CVPR 2020
  3. MySql 之 left join 避坑指南
  4. python回调函数实例详解_Python回调函数用法实例详解
  5. css 清除浮动float 嗒嘀嗒滴 ----20181120
  6. c++歌手大赛系统_计人即讯|第十届程序设计大赛
  7. 码农30多岁,要被辞退的时候 怎么办?
  8. IDEA 点击进入方法内部_Idea中,听说会了Debug,你就离大佬不远了!
  9. ListView自适应实现表格
  10. 《推荐系统笔记(十六)》tf-idf与基于内容的推荐(简单的酒店推荐)
  11. Android Broadcast Receiver 与Activity() (android 开发的四大组件)
  12. j2me联网_与J2ME联网
  13. android xutils3 jar,Android全能开源项目xUtils3开发教程、简单封装
  14. call cs iub wireshark analysis
  15. 写给新人程序猿的15点建议:苦逼程序员的辛酸反省与总结
  16. 微博php面试,新浪微博php实习生
  17. 收藏!2020上半年社区精华教程盘点
  18. 通过PMP认证后,项目经理薪资待遇如何?
  19. 数据可视化之excel和finebi报表实现对比
  20. centOS下tar: bzip2: Cannot exec: No such file or directo

热门文章

  1. Bootstrap框架(二)
  2. 正则表达式学习(2)
  3. 团队作业4——第一次项目冲刺(Alpha版本) Day1
  4. CenterOS的安装配置(配图解)
  5. 【经典算法】——KMP,深入讲解next数组的求解
  6. SAP 设置或取消仓库不参与MRP运算(转)
  7. DirectX9.03D Direct3D初始化
  8. 在Windows下安装和配置Node.js环境v8.11.3与遇到的问题
  9. codeforces 1221 A B C D
  10. Akka-CQRS(2)- 安装部署cassandra cluster,ubuntu-16.04.1-LTS and MacOS mojave