如何用C语言编写“文学研究助手”

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
i tI : n _l
0l =皿 I T s

++
w ib i h et + l  ̄ r un-) er 1 to  ̄Fra Baidu bibliotek l

es le
jnx = e忸 l 湎> rtr 一 eunO I 聃
es le
r ur et n
综合以上 3 个函数的实现, 我们可以写出sac erh函数 , 如下: vi sa h hr a [ Sr gk y , o er ( a meStn eO, d cc n ] i , 查找函数 , 该函数是罄个程序 的重要部分, 对于输入的每—个要 增溅 的关键字, 从小说文件中逐行读取 字符 串查找
[ k 1 ̄ k 2 i + ]一 + ] - s … 一】 l )
S tn x , S ig et , r t ; 存放从小说文件读取的— 行字符串 it- Q , n -1 k, 用于存放行号J = i 用于存放列号 用于输出 格式的控制 FL 堆 IE i p f e( m ,’ / t =o n a er ,  ̄ p n '狮 打开小说文件 ’

= =
i l l ) el k l =k f  ̄ l nx ̄ ; [ = e e e心 = x l x n 收I sn e l e e = e@ l nx  ̄ sk l
求串长函 l 数就是用以 下函数实现
i h t Sr g t n nx tn O t l i s  ̄ (

k- -  ̄
而同时由于 : — +弼 - + 一 l l k 1 k 2 1 k 1 k ・ l s— + 一 + 1 b =j … 一 所 以 : lI. ̄ -l I- +]]k 2 。 -】 a l2 ・ k l U k 1I + ] l a ]. =, I- 。 1 若 T T , Tnx[= [ 那么 :【 I _ 圃 即 [ t Tj e 1 ]  ̄ , T1' 】圆…T 1 ’ Tik 1 一I I I +] — Y [ k 2 "i 邢】 j +] r l , - … l 则根据定义:e ̄ 1 k lnx + nx +] + = el 1 =  ̄ 若 T = ,  ̄11] 1— Ik= 一 + T 一 + ] I l可, T 硼 即 ]2 k lI ̄ 1 …3 I ] k 1 k 2 i 即 l …1 — 时与1】 f发生不等。把 撇 串, U 即模式串第 k 位发生失配, 根据 K MP 算法的基本思路, 当模式串第 k 位发生失配时, 模式串应移动到第 nxk et] [ -’ k位与主串进行比较。 此时 : 1I , 一 1— ‘ll k+] 一 】 1 】 ・ II ‘l b k li ‘2 + l— 一 1 。 然后再 比较 1, 珂 若相等 , 同情况 1nxj1 k 1 e l :e( ] ’ =nx + =+ ; 若不 相等, 返回对隋况 2 的头进行比较。 若 nx = 1即发生失配元素的前- 个元素与第—个元素 4 t e@l一 , 一 o ̄ f 不等, 该应使该失配元素直接与第—个元素比较 ,el 1 。( 睛况可 nx + O 该  ̄ 与第—种隋况合并( n xO 一 ) 因为 et] 1) [= 从 n x ̄k e(= 开始比皎, 首先将 k 自身对齐 比较( 与 找可以与 j 对齐比 较的最长子串) , 如果相等, f p , 则 1 【 满足情况 1 若不相同, ) n 。 即模式串第
f t t ( .A S R E , ; g s e 1 X T L Np e( x ] & M f 从, ) J 孜 件中读取-稍荨 : , 人t t 日 存. e 串中 串 x t t = nh x / e [ l t e ̄, xO e O ] 求读 ^ 的串的长度 jIdxetes ) / =n et k y ; / (x &1 调用 K P M 算法, 统计关睫莽 彳 渤爵 出现的位置, 若匹配 不成功则返回0
信 息产 业
匹配失败的标志:比 较到主串的 。’且此时子串的比菠 /, 0 位不等于
。’ , o 0
+ + + k
・1 ・ l 3
生成 K P改进算法的 nx f M e !组代码 j c
it neL tn , tn jt o) n Id x Sr gS Sr gTn s S i S i p ( it= o. l n ips= ; j w i (= l&&< 嘞 hli S l j= e< O

pi 文件不有由芤稳射 I r  ̄’ n 开^ ’ l pi  ̄请重新输 ^ r t’ n 路径文件名称 、‘ I l
e【 】 i

k y l t y e 部 e e , 擀 白 度 n / 求 乏 gln e 蚺 , 式串( 皂 每 哼 符对应 nx值 e e y _ , 对 字) 蚋 et % ’ e 诲ky / 键 字 / 扣 wi e h o l 女 还溺 文件 尾 来


Gt e 函数就蝴 e nx - t nx e蝴 nx e蝴 记录了当模式串第j 位发生失配时, 模式串 需要移动到第 k 使第k 位, 位与主串 发生失配的位对齐继续E ̄( x3k。nx n 6=) e蝴 e
皂 实现 , n x k已蟹 获得,q n 正F j 隹 假设 el  ̄ 贝从 F 始推 nx + 】 具体 e l 。 算法如下。 假设 nx k第 J 及之前的 n , 值已经求得 ,<)当模式串第 J el ( 位  ̄= el 【 Ⅱ k j, 位发生失配时 , 模式串需要移动到第 k , k 位 使第 位与主串发生失配的位 对齐继续比较。这说明: 除了第 k 其前面的 k 1 位, - 位与主串发生失培的 前 k1 - 位已经匹配。( 因为当第 1 1 位失配时, 1 1 一 】 1 3  ̄2 1 …1 1 已经等于 S
相关文档
最新文档