当前位置: 首页 > ai >正文

算法题(167):FBI树

审题:

本题需要我们将字符串按照题目要求进行递归展开,并按照后序遍历的顺序输出

思路:

方法一:递归

首先我们需要模拟一下题目的意思

其实就是第一步判断属于什么字符,然后将字符串分两半进行下一轮判断。而由于题目要求按后序遍历输出,所以我们就按照后续遍历的方式进行递归调用

疑问:我们如何判断字符串的情况?

如果我们直接遍历来判断会导致时间复杂度过高,所以我们可以采用数值判断法

假设字符串的每一个索引位置的值相加之和为0,说明字符串都为0,此时为字符'B'。

假设字符串的每一个索引位置的值相加之和等于字符串长度,说明字符串都为1,此时为字符'I'。

其他情况就为字符‘F’

递归功能:完成对应索引区间的字符串的后序遍历字符输出

解题:
 

#include<iostream>
using namespace std;
const int N = 15;
int f[1 << N];//前缀和数组
int n;
//dfs负责解决区间中所有字符串翻译与输出的问题
void dfs(int left, int right)
{//结束条件if (left > right){return;}//判断当前串的类型char answer;int sum = f[right] - f[left - 1];if (sum == 0) answer = 'B';else if (sum == right - left + 1) answer = 'I';//sum等于串长度else answer = 'F';//按照后序遍历的方式进行if (left == right)//还剩最后一个字符,若不截断会死递归{cout << answer;return;}int mid = (left + right) / 2;dfs(left, mid); dfs(mid + 1, right);cout << answer;
}
int main()
{cin >> n;n = (1 << n);for (int i = 1; i <= n; i++){char ch;cin >> ch;if (ch == '1') f[i] = f[i - 1] + 1;else f[i] = f[i - 1];}dfs(1, n);return 0;
}

1.我们使用前缀和算法快速的求出对应字符串的sum,前缀和数组存储的是每一个字符的前缀和的值

2.结束条件:left大于right或left等于right

其中大于的情况下:说明所有字符串都遍历完了,直接返回

等于的情况:如果不截断下来会出现死循环,因为mid会等于left。这种情况只剩当前的字符没有输出,我们直接输出当前字符并返回即可

P1087 [NOIP 2004 普及组] FBI 树 - 洛谷

http://www.xdnf.cn/news/13462.html

相关文章:

  • Oracle日志体系和遇到问题后日志排查路径
  • 行为模式-责任链模式
  • 进行性核上性麻痹健康护理指南:全方位照护之道
  • Pytorch 的编程技巧
  • Java八股文——Spring「Spring 篇」
  • 5.4.2树、森林与二叉树的转换
  • 今日行情明日机会——20250611
  • Android GreenDAO 通过 Key 查询数据库数据慢问题优化
  • 13.自治系统路由计算题
  • Node.js:开启现代服务器端编程的新篇章
  • h5fortran 简介与使用指南
  • 新能源知识库(36)什么是BMU
  • 51LA数据分析遇瓶颈?免费统计工具——悟空统计
  • 大话软工笔记—工程分解
  • GlusterFS分布式文件系统
  • 【Keepalived】Keepalived-2.3.4恢复对RHEL7的支持
  • 第七章: SEO与渲染方式 三
  • (十一)优化算法(Optimization):深度学习训练中的收敛性分析与泛化理论
  • 鹰盾视频加密器Windows播放器AI溯源水印技术方案解析
  • ros2--Sophus
  • “新液冷”破题“智算热”,数字经济低碳化发展新解
  • 【Linux】Linux 操作系统 - 22 , 软硬链接详解 !
  • 104.解决在流式回答功能实现之后上传附件功能失效bug之前端处理
  • DAY 28 类的定义和方法
  • 三代社保卡全字段识别-社保卡识别软件-社保卡识别接口集成
  • 结合redis实现文件分片秒传断点续传
  • Linuxkernel学习-deepseek-2
  • Java-43 深入浅出 Nginx - 基本配置方式 nginx.conf Events块 HTTP块 反向代理 负载均衡
  • idea不同颜色总结
  • 【深尚想】LTR-390UV-01光宝环境光传感器电子元器件详细解析