LCS算法程序主过程中的一行语句的说明 [txt3 = txt3 & Mid$(txt2, Ldot, n2 - Tmp - Ldot)] (VB6)

在主过程中,“txt3 = txt3 & Mid$(txt2, Ldot, n2 - Tmp - Ldot)”共出现了3次,而且这几乎就是“主过程”与“函数LCS()”的唯一区别。函数只须求出一串“参与字串”的长度,而主过程还要输出其内容。这句语句起什么作用呢? 我们说,“子序列”是由原字符串剔除了某些字符后所剩下字符按原来的顺序组成的。这“剩下字符”就是一段段连续的字符。我把每一段“剩下字符”称为“参与字串”[在图中用红色细框标出,下同],剔除的字串称为“不参与字串”[在图中用浅蓝色粗横线标出,下同]。 这行语句的作用就是:在下行的字符串(txt2,下同)中,剔除一...
默认分类 | 2020-10-22 11:11 | 阅读 98 次 | 评论 0 条

LCS最长公共子序列计算程序的核心代码说明 附程序和VB源文件

程序的核心代码段说明图:
默认分类 | 2020-09-22 14:46 | 阅读 477 次 | 评论 0 条

再谈LCS(最长公共子序列)另一解法-----用实例分析主过程和递归函数的解题过程(图)。附新编程序(LCS-1.exe)和网上收集的例题。

主过程与函数几乎一样:(请参考2个附图) 把A、B两个字符串中的B、按从头到尾的顺序,逐个在A中寻找相同的字。会有3种结果: 1.直接找到(流程图中的“A”),于是这个字可以加入“最长序列”,然后n1+1、n2+1。这2个数的递增,保证了“一一对应”和“不颠倒顺序”。 2.从n1直到L1(A串的长度)都没有相同的字(流程图中的“Q”),那么这个字排除,且N2+1,而n1不增加,这样也遵守了上面的2个原则。 3.在A串的“延后几个字”(n1+k,k是延后的字数)找到(流程图中的“E”),这是必须按“最长”原则来定夺的,这正是“疑点”。函数中的“>”就是由此引起的。 下面重...
默认分类 | 2020-09-10 15:52 | 阅读 598 次 | 评论 0 条

LCS“最长公共子序列”的另一解题思路(绕开 6 X 7 宫格)----附件有自编的程序

为什么这个程序既可以验证一些网上LCS论文中举出的“短字符例题”(图一),也可以对代码稍作更改后,在1秒内求出近千字的“(无提醒打错的)中文打字测验”文本的“正确字数”(图二)。相信你在看了我下面的的描述后,应该可以有所明白。 两个字串的“最长公共子序列”可以从这样的角度描述:有上下两个字串,把下字串从左到右每一个字在上面“找到相同的字”并“连线”。 有2个要求:1.连线不许交叉。2.连线数“最多”。于是,在两个字串中“剔除”了“无法连线”的字之后,剩下的字串就是“最长公共子序列”了。 ★连线有3种情况,2种非常简单,1...
默认分类 | 2020-09-03 12:40 | 阅读 616 次 | 评论 0 条

中文打字测验文本的量化阅卷程序(续--其跟LCS的关系及应用)

我们先看一个“不用计算机批改的例子”: 样张:“昨天小明带了一个变形金刚到小华家做客” 打字:“昨天小明明带了变形金刚一个到小华家做客” 。请你用肉眼批改有几个“正确字”。 你肯定会说:“正确字”的标准是什么? 根据一般的“共识”,我们会给出3个原则:1:一一对应。2:不颠倒顺序。3:“最长”原则。上述题目的批改结果是:“昨天小明带了变形金刚到小华家做客”(16个字)。 为什么不是“昨天小明带了一个到小华家做客”(14个字)呢?这也符合原则1和原则2呀?这是因为:还有原则3呢。这其实不正是样张和录入的“最长公共子序列”吗? 在一些编程语言中,都有现成的相关代码,...
默认分类 | 2020-08-28 13:18 | 阅读 941 次 | 评论 0 条

中文打字测验文本的量化阅卷程序-流程图

借助“流程图”,用你熟悉的编程语言做出这个程序,应该不会太难。试试看。 图一 图二 关于“错字数”的说明: 把“他到沈阳去了”打成“他到哈尔滨去了”,我这里是“错3”,有些批改程序为“错2多1”,这不影响“正确字数”。(它相当于我这里把 Tmp 拆成错和多两部分) 欢迎指出错误或不妥的地方,也欢迎交流和切磋。
默认分类 | 2020-08-24 12:16 | 阅读 695 次 | 评论 1 条

第二版“中文打字自测程序”

新版的改动主要是:在“时间到”后,不再出现第3个窗口,而是出现一个“对照(下拉)列表”,这样一来界面简洁多了。对比操作也更加简单。(见3个插图)
默认分类 | 2020-06-27 16:14 | 阅读 1557 次 | 评论 2 条

上传一个自编的“文本修改前后对照.exe” 欢迎使用

程序特点: 1.“对照结果”的展示“别出心裁”:既可以在“导航窗口”纵览改动的“全局”,也可以“选中某个修改标记”来观察该修改处的详情。巨细兼顾。(图1,图2)) 2.可以反复进行“对照--编辑修改”,直至满意,保存修改结果(全选后复制,粘贴到记事本保存)。 3.仅1个 52K 的.exe程序,不需要RTF控件。解压后就可以运行。 4.不采用那种“对比后彩色标注文字、对比的文字左右紧挨”的界面,那种界面虽然对照明显,但“可阅性”荡然无存,给著者的“斟字酌句”和现场编辑反而带来不便。 说明:程序中的“悬浮菜单”仅用于“操作提示”和“操作结果的信息反馈”,没有其他功能。单击菜单和单...
默认分类 | 2020-05-21 10:26 | 阅读 1720 次 | 评论 0 条

小巧新颖的打字自测程序(下载、解压就可以运行,欢迎使用)

一、软件特点: 1.小巧(1个exe程序72k)、免安装、不需要外加 OCX 控件。 2.界面贴近实际(图1)。与众多的“打字测试软件”不同,既不会在样张上用“变色”来标出“已经打过的字”,也不会自动将录入光标对准“此刻该打的字”。更不会用“变色”来提示“打错了”。这个程序就像用“记事本”将“稿纸上”的文字录入到计算机里一样,不小心还有可能“漏字”和“多字”。这样的“测试”,才是贴近实际工作环境的。 3.阅卷方式很新颖(图2):选中1个“特殊字符”(◆、■、●)后,可以观察错、多、漏的细节。既不改动“样张”和“录入”的原貌,又能直观地现出“左右对照”。 4.样张就像“纸张”,不仅...
默认分类 | 2020-05-03 20:54 | 阅读 1595 次 | 评论 0 条

介绍一个“记事本模式”的打字自测程序

这个程序是用VB6编制的,不需任何ocx控件。软件大小56k(含1个.exe程序和1个样张文件(yang.txt)。 特点:更贴近实际,无任何提示。犹如看着样纸,用“记事本”录入文字。如果你不认真看清样张,不仅可能打错,还会漏打和多打。阅卷操作也很方便、直观:只要选中一个“特殊字符”(◆、■、●)就可以看清错、漏、多的细节。
默认分类 | 2020-04-21 10:26 | 阅读 1420 次 | 评论 0 条

请教:给别人这样的程序会有什么不妥吗?

我用VB做了一个需要 外接 OCX 控件的程序。 如果把它放在另一台计算机上运行,很可能因为缺少相应的OCX 控件而报错。我采取如下的方法: 添加一个模块,见代码 Attribute VB_Name = "Module1" Option Explicit Private Sub Main() Dim r% r = Shell("regsvr32.exe " & App.Path & "\TEXT\RICHTX32.OCX /s", 1) DoEvents r = Shell("regsvr32.exe " & App.Pa...
默认分类 | 2019-12-24 17:41 | 阅读 1274 次 | 评论 0 条

补充一个视频

我在11月14日的博客中提到“左右正误对照”的方法:批改后,当你在“标准文本”里选中一个“错字”或“漏字”时,程序会立即在“打字文本”那里找到相应的文字或位置,这时,两边都有“选中”;同样,当你在“打字文本”里选中一个“错字”或“多字”时,程序也会立即在“标准文本”那里找到相应的文字或位置。可见,“两边都有选中”的效果,使“正误对照”很醒目。
默认分类 | 2019-11-18 09:17 | 阅读 1373 次 | 评论 0 条

VB6-文本框的这个属性让“左右正误对照”更加醒目

在这个程序的上2个版本中,我没有办法让左右两边“都选中”,只能用“一边选中、另一边加粗”来解决。但是这样处理,不仅“加粗”远不及“选中”来得醒目,而且后面还要“取消加粗”。 现在我知道了,只要把左右2个文本框的“HideSelection”属性都设置为“False”就行了。(现在再上传一次修改后的程序,以示补过。) -------------------------------- 作者在 2019-11-14 16:03:41 补充以下内容 --------------------------------补充:这个程序应该有一个配套的文件,“001.rt...
默认分类 | 2019-11-14 12:20 | 阅读 1429 次 | 评论 0 条

VB6-在程序外调整RTF文本框(全框)的行距、字符间距......

Option Explicit Private Sub Form_Load() Show RichTextBox1.LoadFile (App.Path & "\001.rtf") DoEvents RichTextBox1.LoadFile (App.Path & "\杨乐.txt") End Sub 方法:双击“001.rtf”,(只看见一个回车符号),选中它,用“Word”工具栏设置它的行距、字符间距、 字体、字号等等。保存好就行了。 这个文件自己用“Word”建立也很容易:仅一个回车,设置好行距等等之后,保...
默认分类 | 2019-10-26 20:08 | 阅读 1748 次 | 评论 0 条

“打字自测程序(不提醒错漏多)”的两处改进

改进1. 批改后,不插入“菱形”。因为我感觉破坏了文本的可读性。 图一 :录入过程中,打错、漏打、多打都没有提醒。 图二 :批改后,统计各项数据、并用不同的颜色标注 错、漏、多。 --------------------------------------------------------------- 改进2. 左右对照的方法更加简便。 “左右对照”:只要选中一个“彩色的字符”(非黑色),程序就会自动在另一边找到并选中(加粗)相应的字符串。(右击文本会有快捷菜单--“取消加粗”)(由...
默认分类 | 2019-09-21 17:35 | 阅读 2010 次 | 评论 0 条

“非描红式”打字测试程序

图一:录入中 图二:批改后 程序需要注册2个.ocx控件:COMDLG32.COX RICHTX32.OCX 说明: 1.程序没有“防止粘贴”功能,可以在录入框“粘贴”文字。 2.可以打完全部的样文,也可以不打完。只要用“打字结束”菜单或者【Esc】就可以准备批改。 3.批改后,标准文本插入了“●”,以标志“实际对照的文字”(计算“正确率”用到) 4.正确率的计算,可以根据各个场合自由决定(各类数据已经有了),本程序的计算方法是: 正确率=正确字数 / 实际对照字...
默认分类 | 2019-08-15 16:55 | 阅读 1205 次 | 评论 3 条

不常见的“打字测验程序” (有插图)

见过不少的“打字测验”程序,很多程序都有一个“特点”:描红簿方式。 当你漏打一个字或多打一个字时,立马会提醒你。如果你不理会它的提醒,一意孤行打下去,那么后面的字全部都错了。也就是说,你的“作品”中不会有“漏字”和“多字”。 实际工作中,往往是看着纸上的手写稿打字,谁来提醒你漏了或多了? 我编的这个程序是:时间一到,录入窗口锁定,用颜色显示结果:红色表示打错;绿色表示漏打;蓝色(加单删除线)表示多打。并给出“速度”和“正确率”。(由于“正确率”的计算方法还有待商榷,程序没有上传)
默认分类 | 2019-03-17 17:59 | 阅读 833 次 | 评论 1 条

VB源代码----文本修改前后对照

这个程序对于修改前后变化不是太大的文本对照起来还是比较适用的。代码与上次提起的“中文打字批改程序”比较起来要简洁得多。由于水平不高,代码中肯定有许多幼稚与不足,甚至会有错误。欢迎有兴趣的朋友共同商榷,欢迎指正。(程序需要2个OCX控件:RICHTX32.OCX、COMDLG32.OCX) 不好意思,Form1.frm 最后一个过程中,多了一句:请按截图把这句删除掉:
默认分类 | 2019-02-07 11:55 | 阅读 1153 次 | 评论 0 条

文本比对的一种算法探索、比对算法中的难点及解决方法

在录入文本里,有2种字符:“有效字符”和“多打字符”。“有效字符”是指它在标准文本里可以找到唯一的“对应字符”。“对应字符”当然与它相同,但是,相同的字符不一定就是“对应字符”。例如: 标准文本:我们班里的学生大多数是女生。 录入文本:我们班里喜欢数学的学生大多数是女生。 录入文本的第一个“数”字,在标准文本里是找不到“对应字符”的。 我的算法思路是这样的:对于录入文本里的每一个字符(包括看不见但是占位置的全、半角空格;包括看不见又不占位但长度又不为零的回车),在标准文本里寻找“对应字符”。(如何确认“对应字符”是个难点,我在后面会提出解决方法,那...
默认分类 | 2019-01-11 21:24 | 阅读 2469 次 | 评论 2 条

中文打字文本比对程序(用VB自编的)

我编了一个能够对中文打字文档进行批改、统计错、漏、多字;计算有效字符数、正确率的程序。有成绩保存,也能用不同颜色表示错漏多字。用下来还不错。现已经发布到“VB6论坛”。(不知怎样上传图片?)
默认分类 | 2019-01-10 20:14 | 阅读 1291 次 | 评论 4 条
浏览48670次
文章分类