冫 符 character。 删 除 string屮 第
一
次 出
现 的 character,鼓 后 返 冂 str⊥ nq。
4,编 t了 函 数 strp。 s△ ,参 鞋 足 字 符 串 str土 ng和 宁 符 charac匕 er。 函 数 返 冂
一
个 整 数 ,即 在
str土 ng中 第
一
次 出 现 character的 位 置 。 如 太 character不 在 str土 ng中 ,返 冂 -1。
不
应 调川 str土ng.hL⒈ JF向s匕rp。 函数,虽 然它 不楚 A∶NSI C的 标准 函数,可 楚仃些 C讠手丨l`^
库捉供这 个函数。
5.编 tJ函 数 strchr△ ,完 成 Ij上 题 strp○ △丬‖{1的 功 能 ,不 过返 「Π值 足指 向 string屮
character第 一
次 出 现 的 字 符 指 针 。 劫 l宋 character不 在 str土 ng屮 ,返 Fl NuLL。
6.修 改稆序 2.12,不 川临时变 鞋 temp。 分析新稆序时间复杂度并与原不V序 相 比。
7.证 明 n£土nd的 计算时间足 O(彳彳),″ 足主中 κ度,昭 足模式 串 K度 。川具体的主申、模 式 中加 以说 明。
8,计 算 卜列模式 申的失配函数 :
(a) rInrI砑 乙
(b) 日乙伢抄日伢
(C) 伢 D日 伢乙砑砑抄
9.证 明正文中两种失配函数的定义t价 。
§ 2。 8 参 考 文献和选读材 料
[11I.H.Morris D。 E.Knuth and V R。 Pratt。 Fast pattern matching h strings,SrAM Jo伢 /P,`J
c,rT Co〃 `oJfJ彳 g'6(2)∶ 3⒛ -350'1977,KNIP箅 法 原 始 文 献 。
[2]C.L0SersOn T.Cormen and R。 Fuvest.r刀 rr0'〃 cF汩 彳 fo A愆 orjfJI,P,s。 McGraw-Hill`New
York'N、 zO02.除 了 KNIP算 法 ,还 讨 论 其 它 串 匹 配 算 法 。
78 第 2章 数组和结构
§2.9 补 充 习题
给定数细 伢kl,生 成数细 zkl,使 zlOl=砑 u— 11`z卜l=伢 I″一钊'…・'zk一 丬 =四 I11' Zk-11=伢 lOl。要求仅川最少鞋存储空间。
昭×彳矩阵的鞍点定义为 四H"既 足第 扌行的最小值义足第 丿行的最人值。编写函数找 出工维矩阵的鞍点。指出函数的计算时问。
下面的习题从习题 3到 习题 8探 讨各种矩阵表示,常 用于自然科学领域。
三角阵足主对角线 以上或以 卜矩阵尢紊仝为零的 △维矩阵,图 2.12中 仃一个 卜二角阵 和一个上二角阵。对 彳行的 卜二角阵,第 j彳Ⅰ∷{卜零元紊的最人列 号足 J+1,冈 此矩阵中
图 2.12卜^工
角阵和 上工角阵
'=∑ (J+1)=彳 (″ +1)/2・
`=0
川工维数细存储这样的 卜Ⅰ角阵浪费很多空闸,如 呆川 ・维数细存储 lr苓元素Ι刂以 i1 省人鞋空问。卜ˉ
∶工角阵 伢可以按行存储在 -维数细 Dp∶ 77(彳+1)/2— 11屮 ,夕p]lOl元 素 对应 Dpl,指 丨l丨`Ⅱ元紊在 抄中的位置。
令日'乙足两个 ″行的 卜工角阵,两 个矩阵共仃 i卜零尢 ″(″+1)个 。川知I阵 'p∶ ″~11p∶
冫71存 储 日'抄两个矩阵,给 出实现细 {1。(捉刂t:四 可以川 '的 卜工角表示,乙 的转置阵可 以用 丿的上工角表示。)编 稆实现在 丿中存取 砑H凵 '乙H凵 '0兰 j'丿(″ 。
三对角阵足除主对角线及其相邻上 卜两条对角线之外都足零元的方阵,见 图 2.13(a)。二 条对角线中f沟元素可以按行存储在一维数纠l汐中,伢lOllOl对应l抄lOl。编稆实现在 D中 存 取 夕H凵 '0兰 扌'∫(彳 °
带型方阵 D″'足 ″×″f内矩阵,什 型Ⅸ域足主对角线及其相邻上 卜的 伢-1条 对角线, 带型区域之外都是零元素,见 图 2.13lb)(c)。
(al D″'的 带型「×域屮共有多少元素?
(b)写 出 D″、、带型区域中元素 吻 的 卜标 讠丿之间的关系表达式。
’ 一
3.
4.
5,
6.
§2.9补 充 习题 79
m)△ 对 角M
fci)丿′
义带 型 方M
}图2.13牛I种 力^阝 午
(c)把 D彳〃的对角线顺序 存储 在数细 乙屮,″`歧 卜-条对角线 丌攻f}。例劫l,图 2.13(a) D逛`3|j乙 F向对丿“`足 :
bpl 抄 I11 乙I钊 乙 β] D⒕ l 抄I51 抄⒗| 乙丨丬 乙 B| Dpl 乙 [101 抄I111 乙[121 乙I131
978366028749 84
'20 '31 '10 '21 〃 32 ci00 '11 '22 〃 33 '01 〃 12 ti23 tiO2 丿 13
写出 D″`、中 卜半带Ⅱ刂「×^域
中 〃`丿伯:h屮 的位苴公式 (劫丨卜例屮 〃10的 位 置赴2)。
广义带型方阵 D″`伢、b足 ″×彳的矢[∶阵,带 丿Ⅰ刂「×域包栝}×、j角 线及 Jt卜 n勹`-1条 对角线 和其上的 抄-1条 对角线 ,带 Ⅱ刂「×域之外都足岑元素,见 图 2,13ld)。
(a)D刀 `夕`汐的带′l刂|×域 中共苻 多少元素?
(b)写 出 D竹、伢`D带’Ⅰ刂区域 中元素 dJl的 卜标 J'丿之 问的关系表达式 。
(c)给 出 D刀
`伢 `汐 带 型 R域 用
一
维 数 细 卩 表 示 n勺 订 法 。 编 丐 函 数 va1ue(n`a`b`i`j`e)取
D彳`伢`乙中元 素 dtl的 值 ,e足 存储 D″、、ヵ带 Ⅱ丿区域 数据 的一维数纤丨。
复数矩 阵 X的 元素 足工元细 (x'y),γ 'y楚 实数。编写函数实现 lIlxl个复数矩阵本H乘 。
给 定 矩 阵 ((伢 丿乙 >)/″ ×″'((''召 >)刀 ×`'
<伢 '乙 >・ ('`召 )=(伢 +j乙 )・ ('+佗 )=(伢 丿一 抄`)+∫ (日:+乙 '),
若两个矩阵的维数都楚 ″×″,指 出运算所需加法 、乘法 的次数 。
0
0
7,
8.
(b)带 犁 方竹:D4、3
80 第 2章 数组和结构