UVa 645 File Mapping
题目描述在图形用户界面出现之前计算机用户常通过缩进形式查看目录结构。本题要求模拟文件系统的目录映射给定一系列目录名以d开头和文件名以f开头以及目录结束标记]输出缩进形式的目录树要求每个目录下先显示子目录按输入顺序再显示文件按字母序。每个数据集以*结束整个输入以#结束。输入格式输入包含多个数据集。每个数据集的开始是若干行每行一个字符串表示文件名以f开头或目录名以d开头或目录结束标记]。数据集以单独一行*结束。整个输入以单独一行#结束。输出格式对于每个数据集输出DATA SET X: ROOT然后按缩进方式输出目录结构子目录先出现后跟文件文件按字母序排列。每个目录的缩进为|竖线加五个空格。不同数据集之间用一个空行分隔。样例输入file1 file2 dir3 dir2 file1 file2 ] ] file4 dir1 ] file3 * file2 file1 * #输出DATA SET 1: ROOT | dir3 | | dir2 | | file1 | | file2 | dir1 file1 file2 file3 file4 DATA SET 2: ROOT file1 file2题目分析本题要求模拟文件系统的目录遍历并按特定顺序输出。目录名和文件名由首字符区分d和f目录结束用]表示。数据结构上需要维护一个当前路径栈以及每个目录下的文件集合自动按字母序排序。子目录在遇到d时立即输出缩进后并压栈遇到]时输出当前目录的所有文件缩进后然后出栈遇到f时将文件名加入当前目录的文件集合。整个数据集结束后根目录的文件也需要输出。由于输入规模较小直接模拟即可。解题思路维护一个栈indexer表示当前目录的路径使用一个映射dirs存储目录编号到目录名的对应关系另一个映射files存储每个目录下的文件集合setstring自动排序。对于每个数据集输出标题DATA SET X:和ROOT。初始化根目录编号 0名称为ROOT压栈。循环读取每一行若为*或#退出循环。若以f开头将文件名插入当前目录的文件集合。若以d开头创建新目录分配新编号输出缩进后的目录名压栈。若为]则输出当前目录的所有文件缩进后然后出栈。数据集结束时输出根目录的所有文件。缩进控制输出时除根目录外每层缩进为| 缩进次数等于当前栈深度减111因为根目录不缩进。复杂度分析每个文件或目录处理一次时间复杂度O(Nlog⁡K)O(N \log K)O(NlogK)其中NNN为条目总数KKK为每个目录下的文件数排序开销。空间复杂度O(N)O(N)O(N)。代码实现// File Mapping// UVa ID: 645// Verdict: Accepted// Submission Date: 2018-03-28// UVa Run Time: 0.000s//// 版权所有C2018邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);intcases0;string line;while(getline(cin,line)){if(line#)break;if(cases0)cout\n;coutDATA SET cases:\n;coutROOT\n;intidx0;vectorintindexer;mapint,stringdirs;mapint,setstringfiles;dirs[idx]ROOT;indexer.push_back(idx);do{if(line*)break;if(line.front()f)files[indexer.back()].insert(line);elseif(line.front()d){dirs[idx]line;indexer.push_back(idx);for(inti1;iindexer.size();i)cout| ;coutdirs[indexer.back()]\n;}else{for(autof:files[indexer.back()]){for(inti1;iindexer.size();i)cout| ;coutf\n;}indexer.pop_back();}}while((getline(cin,line)));for(autof:files[0])coutf\n;}return0;}总结本题通过栈模拟目录嵌套利用set自动排序文件实现了目录结构的缩进输出。关键点在于正确处理目录的进入和退出]以及输出顺序子目录先于文件文件按字母序。由于输入规模较小模拟法简洁高效。注意输出格式中的缩进和空行控制。

相关新闻

一个独立站小白的建站成本实测:从Shopify到国内服务商,我踩过的坑和总结

一个独立站小白的建站成本实测:从Shopify到国内服务商,我踩过的坑和总结

背景我是做亚马逊FBA的,去年开始想搞一个独立站。原因很简单——亚马逊的佣金越来越高,而且客户数据我碰不到。你卖了多少单、客户是谁、复购率怎么样,所有这些信息都在亚马逊手里。长期来看,这就是个定时炸弹。但问题来了&#x…

2026/7/10 12:57:15阅读更多 →
Perplexity学术搜索效率翻倍:3步定位顶刊论文+2个隐藏过滤器实战教程

Perplexity学术搜索效率翻倍:3步定位顶刊论文+2个隐藏过滤器实战教程

更多请点击: https://kaifayun.com 第一章:Perplexity学术搜索效率翻倍:核心价值与适用场景 Perplexity 是一款面向研究者的 AI 增强型学术搜索引擎,其核心价值在于将传统关键词检索升级为“语义理解可信溯源”的双轨模式。它不依…

2026/7/10 12:57:15阅读更多 →
关于CWMP基础(二)----TR069通信流程

关于CWMP基础(二)----TR069通信流程

1.通信流程图建立TCP连接SSL初始化,进行加密建立安全机制由CPE端发起HTTP请求,发送Inform报文,开始建立CWMP连接。Inform中使用Eventcode字段描述发送Inform请求的原因 如 6 CONNECTION REQUEST ,表示ACS要求建立连接。如果ACS通过…

2026/7/10 12:57:15阅读更多 →
(25-1)基于

(25-1)基于

在本章的内容中,图13-2 模块结构图

2026/7/10 14:07:33阅读更多 →
STM32L041C6驱动压电陶瓷发声器的低功耗警报方案

STM32L041C6驱动压电陶瓷发声器的低功耗警报方案

1. 项目背景与核心需求警报系统在各种环境下的可靠性直接关系到人身安全和设备保护。传统蜂鸣器在复杂环境中往往存在音量不足、音质失真等问题,特别是在工业噪声、户外风雨等干扰环境下表现不佳。EPT-14A4005P压电陶瓷发声器配合STM32L041C6低功耗MCU的方案&#x…

2026/7/10 14:07:33阅读更多 →
AD5593R与PIC18F2610硬件设计及固件优化实战

AD5593R与PIC18F2610硬件设计及固件优化实战

1. AD5593R与PIC18F2610的硬件协同设计 1.1 AD5593R的核心特性解析 AD5593R这颗芯片最吸引人的地方在于它的多功能引脚配置能力。每个引脚都可以通过软件配置为四种工作模式:12位DAC输出、12位ADC输入、数字输出或数字输入。这种灵活性意味着我们可以在不改变硬件连…

2026/7/10 14:07:33阅读更多 →
从 0 到 1:基于 Cursor 与 GPT-5/Claude 4 构建企业级智能重构平台

从 0 到 1:基于 Cursor 与 GPT-5/Claude 4 构建企业级智能重构平台

从 0 到 1:基于 Cursor 与 GPT-5/Claude 4 构建企业级智能重构平台项目背景在 2026 年的当下,随着大模型能力的指数级跃升,传统软件开发模式正经历剧烈震荡。我们团队负责的电商核心交易系统,历经五年迭代,积累了大量“…

2026/7/10 14:07:33阅读更多 →
如何用SPT-AKI存档编辑器解放你的塔科夫离线游戏体验

如何用SPT-AKI存档编辑器解放你的塔科夫离线游戏体验

如何用SPT-AKI存档编辑器解放你的塔科夫离线游戏体验 【免费下载链接】SPT-AKI-Profile-Editor Программа для редактирования профиля игрока на сервере SPT-AKI 项目地址: https://gitcode.com/gh_mirrors/sp/SPT-AKI-Pr…

2026/7/10 14:07:33阅读更多 →
3步快速解决Windows多显示器DPI缩放难题的完整方案

3步快速解决Windows多显示器DPI缩放难题的完整方案

3步快速解决Windows多显示器DPI缩放难题的完整方案 【免费下载链接】SetDPI 项目地址: https://gitcode.com/gh_mirrors/se/SetDPI 你是否曾为Windows多显示器DPI缩放问题而烦恼?想象一下这样的场景:你正沉浸在工作中,4K主显示器上的…

2026/7/10 14:02:32阅读更多 →
从GitHub安全案例解析常见漏洞与防护实践

从GitHub安全案例解析常见漏洞与防护实践

1. 项目概述:从GitHub Trending看安全实战 最近在GitHub Trending上看到一个项目,叫 skills4/skills ,它因为一些安全漏洞案例被大家讨论。这其实是一个挺典型的场景:一个旨在展示或教授某种技能的仓库,本身却成了安…

2026/7/10 12:10:00阅读更多 →
MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

MLT 2026启示:因果推理与概率建模驱动下一代LLM应用

# MLT 2026启示:因果推理与概率建模驱动下一代LLM应用## 一、背景与挑战:从“黑箱预测”到“可信推理”2026年6月,第7届机器学习与趋势国际会议(MLT 2026)将在悉尼召开。会议议程中,“因果与可解释机器学习…

2026/7/10 12:29:21阅读更多 →
通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

通达OA SQL注入漏洞深度剖析:从手工注入到自动化利用与防御

1. 项目概述与漏洞背景最近在梳理一些历史OA系统的安全风险时,通达OA v11.6版本中的一个老漏洞又进入了我的视线。这个漏洞位于/general/bi_design/appcenter/report_bi.func.php文件中,是一个典型的SQL注入点。虽然这个漏洞的利用方式看起来并不复杂&am…

2026/7/10 4:59:05阅读更多 →
浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比

浏览器缓存行为深度解析:Chrome/Firefox/Safari 对 304 响应的 5 种触发场景对比当你在浏览器地址栏敲入一个网址时,背后可能隐藏着一场关于"要不要重新下载资源"的精密博弈。这场博弈的裁判是HTTP缓存机制,而304状态码则是这场博弈…

2026/7/10 0:00:01阅读更多 →
RoboWits:面向创造性问题求解的双臂机器人认知推理基准

RoboWits:面向创造性问题求解的双臂机器人认知推理基准

1. 项目概述:这不是又一个机器人抓取数据集,而是一次对“思考力”的压力测试 RoboWits——这个名字里藏着两个关键信号:“Robo”直指物理世界中的具身智能体,“Wits”则毫不掩饰地指向人类最核心的认知能力:机敏、判断…

2026/7/10 0:00:01阅读更多 →
5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能

5分钟完全指南:如何使用TegraRcmGUI图形化工具解锁Switch无限可能 【免费下载链接】TegraRcmGUI C GUI for TegraRcmSmash (Fuse Gele exploit for Nintendo Switch) 项目地址: https://gitcode.com/gh_mirrors/te/TegraRcmGUI TegraRcmGUI是一款专为Windows…

2026/7/10 0:00:01阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/10 13:39:09阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/9 15:50:44阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/9 14:14:17阅读更多 →