10298: Power Strings ★★☆☆☆ 題組:Problem Set Archive with Online Judge

Slides:



Advertisements
Similar presentations
首页 全国高等学校招生考试统一考试 监考员培训 广州市招生考试委员会办公室.
Advertisements

安徽7班全真模拟 主讲: 杨洁 时间:6月12日晚.
人口增长.
诚信为本、操守为重、坚持准则、不做假账 第 九 章 会 计 报 表.
第一章 会计法律制度 补充要点.
11010: Tic-Tac-Tough ★★★★☆ 題組: Problem Set Archive with Online Judge
二、个性教育.
2011年10月31日是一个令人警醒的日子,世界在10月31日迎来第70亿人口。当日凌晨,成为象征性的全球第70亿名成员之一的婴儿在菲律宾降生。 ?
Chapter 2 不等式.
财经法规与会计职业道德 (7) 四川财经职业学院.
新准则框架与首次执行 企业会计准则 主讲人:陈清宇.
初级会计实务 第八章 产品成本核算 主讲人:杨菠.
问题解决与创造思维 刘 国 权 吉林省高等学校师资培训中心.
中考阅读 复习备考交流 西安铁一中分校 向连吾.
第四单元 自觉依法律己 避免违法犯罪.
财经法规与会计职业道德 (3) 四川财经职业学院.
中央广播电视大学开放教育 成本会计(补修)期末复习
人教版义务教育课程标准实验教科书 小学数学四年级上册第七单元《数学广角》 合理安排时间 248.
第四章 汽车零件损伤与检验分类 学习目的: 学习要求: 了解汽件零部件磨损的成因及规律。 学会汽件零件检验方法和准确分类。
市级个人课题交流材料 《旋转》问题情境引入的效果对比 高淳县第一中学 孔小军.
面向海洋的开放地区——珠江三角洲 山东省高青县实验中学:郑宝田.
线索一 线索二 复习线索 专题五 线索三 模块二 第二部分 考点一 高考考点 考点二 考点三 配套课时检测.
第四课时 常见天气系统 阜宁一中 姚亚林.
中考语文积累 永宁县教研室 步正军 2015.9.
小学数学知识讲座 应用题.
中共通钢集团栗矿公司第十七次代表大会召开
倒装句之其他句式.
旅游服务与管理专业 知识点7 道教教主老子圣迹 任务三 道 教 主题二 中国四大宗教 辉县市职业中等专业学校 辉县市职业中等专业学校
三角形的邊角關係 大綱:三角形邊的不等關係 三角形邊角關係 樞紐定理 背景知識:不等式 顧震宇 台灣數位學習科技股份有限公司.
第 22 课 孙中山的民主追求 1 .近代变法救国主张的失败教训: “师夷之长技以制 夷”“中体西用”、兴办洋务、变法维新等的失败,使孙中山
String Matching Michael Tsai 2012/06/04.
如图:直线AB、CD相交于O,图中有哪些角具有特殊位置关系?这些角数量上有什么关系?
知识点二 国际环境法的实施.
10465: Homer Simpson ★★★☆☆ 題組:Problem Set Archive with Online Judge
挑戰C++程式語言 ──第8章 進一步談字元與字串
1. 求真空中一长为L、总电量为q的均匀带电细直线杆延长线上的电场强度。
String Matching Michael Tsai 2013/05/28.
10902: Pick-up Sticks ★★☆☆☆ 題組:Problem Set Archive with Online Judge
基础会计.
10415: Eb Alto Saxophone Player
▲重合的概念 ▲對應頂點、對應邊、對應角 ▲全等的記法 ▲全等性質 ▲三角形全等性質
10115: Automatic Editing ★★☆☆☆
第八节 算术运算符和算术表达式.
10394: Twin Primes ★★★☆☆ 題組:Problem Set Archive with Online Judge
12797: Letters ★★★☆☆ 題組:Problem Set Archive with Online Judge
11058: Encoding ★☆☆☆☆ 題組:Problem Set Archive with Online Judge
職業學校群科課程綱要規劃原理及修訂重點 報告人:鄭慶民
Commando War ★★☆☆☆ 題組:Problem Set Archive with Online Judge
10328: Coin Toss ★★★☆☆ 題組:Problem Set Archive with Online Judge
674: Coin Change ★★☆☆☆ 題組:Problem Set Archive with Online Judge
1753: Need for Speed ★★☆☆☆ 題組:Problem Set Archive with Online Judge
1757: Secret Chamber at Mount Rushmore
13194: DPA Number II ★★☆☆☆ 題組:Problem Set Archive with Online Judge
1730: Sum of MSLCM ★★☆☆☆ 題組:Problem Set Archive with Online Judge
11908: Skyscraper ★★★☆☆ 題組:Problem Set Archive with Online Judge
美丽的旋转.
10599: Robots(II) ★★★★☆ 題組:Problem Set Archive with Online Judge
11455: Behold My Quadrangle ★☆☆☆☆
10393:The One-Handed Typist
10107: What is the Median? ★★☆☆☆
10440: Ferry Loading II ★★☆☆☆ 題組:Problem Set Archive with Online Judge
10791: Minimum Sum LCM ★★★☆☆ 題組:Problem Set Archive with Online Judge
String類別 在C語言中提供兩種支援字串的方式 可以使用傳統以null結尾的字元陣列 使用string類別
畢氏定理(百牛大祭)的故事 張美玲 製作 資料來源:探索數學的故事(凡異出版社).
10489: Boxes of Chocolates ★★☆☆☆
10303: How Many Trees? ★★☆☆☆ 題組:Contest Archive with Online Judge
12439: February 29 ★☆☆☆☆ 題組:Problem Set Archive with Online Judge
11621 : Small Factors ★★☆☆☆ 題組:Problem Set Archive with Online Judge
微 處 理 機 專 題 – 8051 C語言程式設計 主題:階乘計算
102年人事預算編列說明 邁向頂尖大學辦公室製作.
Presentation transcript:

10298: Power Strings ★★☆☆☆ 題組:Problem Set Archive with Online Judge 解題者:陳衍豪 解題日期: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.  . 解法: (1) 窮舉法: 0. 1. 2. ababcabc ababcabc ababcabc | | | | | | | | | abc abc abc (X) (X) (O) 3. 4. 5. | | | | | | | | | 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。 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 -1 1 2 -1 for (int i=1, j=failure[0]=-1; i<p.size(); ++i)  {           while (j >= 0 && p[j+1] != p[i])             j = failure[j];           if (p[j+1] == p[i]) j++;           failure[i] = j;     }

解法: 在主程式中由一個參數t去接收KMP函式所回傳的j值,並判斷字串長度len是否整除(len-t-1),是則印出其商數,否則印出1。 解法範例: abcd  len=4  F[4] = -1 -1 -1 -1 return j = -1 aaaa  len=4  F[4] = -1 0 1 2 return j = 2 ababab len=6 F[6] = -1 -1 0 1 2 3 return j = 3

討論: 對於 字串s的某一個字元來說,與其他字元進行比對的次數<=「當下比對成功的字串片段」的長度。「當下比對成功的字串片段」是動態改變的,所以字元兩兩比對的總次數不超過 2*s 次。同理計算失敗函數的總次數不會超過2* 「次長的共同前後綴」次,又最長的「次長的共同前後綴」不會超過s。 時間複雜度 = O(s)