HBC16901[NOI2003]文本编辑器题解

冷默言语 算法基础篇 42 0
全网最全C++题库,助您快速提升编程技能!题库丰富多样,涵盖各个领域,让您在练习中不断成长!
多年之后,出于偶然的机会,小明找到了当时的一个编辑软件,进行了一些简单的测试后,小明惊奇地发现:那个软件每秒能够进行上万次编辑操作!于是,小明废寝忘食地想做一个同样的东西出来,你能帮助他吗?建立一个空的文本编辑器, ?

很久很久以前,DOS3.x的程序员们开始对EDLIN感到厌倦。于是,人们开始纷纷改用自己写的文本编辑器…… 多年之后,出于偶然的机会,小明找到了当时的一个编辑软件。进行了一些简单的测试后,小明惊奇地发现:那个软件每秒能够进行上万次编辑操作(当然,你不能手工进行这样的测试)!于是,小明废寝忘食地想做一个同样的东西出来。你能帮助他吗?   为了明确任务目标,小明对“文本编辑器”做了一个抽象的定义: 文本:由0个或多个字符构成的序列。这些字符的ASCII码在闭区间[32, 126]内,也就是说,这些字符均为可见字符或空格。 光标:在一段文本中用于指示位置的标记,可以位于文本的第一个字符之前,文本的最后一个字符之后或文本的某两个相邻字符之间。 文本编辑器:为一个可以对一段文本和该文本中的一个光标进行如下六条操作的程序。如果这段文本为空,我们就说这个文本编辑器是空的。 操作名称 输入文件中的格式 功能 MOVE(k) Move k 将光标移动到第k个字符之后,如果k=0,将光标移到文本第一个字符之前 INSERT(n, s) Insert n↵ S 在光标后插入长度为n的字符串s,光标位置不变,n ≥ 1 DELETE(n) Delete n 删除光标后的n个字符,光标位置不变,n ≥ 1 GET(n) Get n 输出光标后的n个字符,光标位置不变,n ≥ 1 PREV() Prev 光标前移一个字符 NEXT() Next 光标后移一个字符 比如一个空的文本编辑器依次执行操作INSERT(13, “Balanced tree”), MOVE(2),DELETE(5),NEXT(),INSERT(7, “editor”),MOVE(0),GET(16)后,会输 出“Bad editor tree”。 你的任务是: ? 建立一个空的文本编辑器。 ? 从输入文件中读入一些操作并执行。 ? 对所有执行过的GET 操作,将指定的内容写入输出文件。

HBC16901[NOI2003]文本编辑器题解
-第1张图片-东莞河马信息技术
(图片来源网络,侵删)
全网最全C++题库,助您挑战自我,突破极限,成为编程领域的佼佼者!

标签: HBC16901[NOI2003]文本编辑器题解