解法范例:abcd.PPT

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
解法范例:abcd

1 * 10298: Power Strings ★★☆☆☆ 題組:Problem Set Archive with Online Judge 題號:10298: Power Strings 解題者:陳衍豪 解題日期:2014年3月20日 題意:定義a*b為a和b兩個字串的連接式。舉例來說: 若a = “abc”,b = “def”,則a*b 定義為“abcdef“。 今天程式要求當使用者輸入包含可印出字元的字串s時, 程式必須判斷使s= 的n值,也就是s最長可由幾個子字串組成。其中s的範圍介於一個字元至最長  個字元。 輸入由”.”字元代表結束。 * 題意範例: input:  output:  abcd    1  aaaa    4  ababab   3  . 解法: (1) 窮舉法: 0. 1. 2. ababcabc ababcabc ababcabc | | | | | | | | | abc abc abc (X) (X) (O) 3. 4. 5. ababcabc ababcabc ababcabc | | | | | | | | | abc abc abc (X) (X) (O) 時間複雜度= O(a字串長度*b字串長度) * (2) KMP(Knuth-Morris-Pratt)演算法: *次長的共同前後綴(Longest Proper Prefix-Suffix): T: aabzabzabcz P: abzabc 當挪動至下圖位置,發現P僅有一部分比對成功: V aabzabzabcz | | | | | abzabc .abzab..... .abzab..... .abzab..... .abzab..... .abzab..... | | | | | | | | | | abzab. abzab. abzab. abzab. abzab. (P shift 1) (P shift 2) (P shift 3) (P shift 4) (P shift 5) * 得到比對成功的字串片段,也就是P的前綴(prefix)為abzab 它的「次長的共同前後綴」:ab。 如果預先知道「次長的共同前後綴」,就可以一口氣大幅挪動P,略過許多步驟: V V aabzabzabcz aabzabzabcz | | | | | --- | | abzabc abzabc 由「V」處繼續向右比對字元。當比對失敗、遇到相異字元,就再次使用比對成功的字串片段,取其「次長的共同前後綴」來大幅挪動P。 * *失敗函數:failure function ( prefix function ): 它是一個字串函數,輸入字串的其中一個前綴,則輸出該前綴的「次長的共同前後綴」。 位置 0 1 2 3 4 5 6 T[7] = AABAABB  F[7] = -1 0 1 2 -1 0

文档评论(0)

xiaozu + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档