藍橋杯java第八屆B組:最大公共子串
最大公共子串長度問題就是:
求兩個串的所有子串中能夠匹配上的最大長度是多少。
比如:"abcdkkk" 和 "baabcdadabc",
可以找到的最長的公共子串是"abcd",所以最大公共子串長度為4。
下面的程式是採用矩陣法進行求解的,這對串的規模不大的情況還是比較有效的解法。
請分析該解法的思路,並補全劃線部分缺失的程式碼。
這個有點dp的意思,分別計算兩個字串每一個字元到另一個字元是否相等 若相等 則加前面字元的最大字串 若前面字元也分別相等則他就等於a[i-1][j-1]+1 若不想等則為0+1
public class 最大公共子串 { static int f(String s1, String s2) { char[] c1 = s1.toCharArray(); char[] c2 = s2.toCharArray(); int[][] a = new int[c1.length+1][c2.length+1]; int max = 0; for(int i=1; i<a.length; i++){ for(int j=1; j<a[i].length; j++){ if(c1[i-1]==c2[j-1]) { a[i][j]=a[i-1][j-1]+1; //填空 if(a[i][j] > max) max = a[i][j]; } } } return max; } public static void main(String[] args){ int n = f("abcdkkk", "baabcdadabc"); System.out.println(n); } }
相關推薦
藍橋杯java第八屆B組:最大公共子串
最大公共子串 最大公共子串長度問題就是: 求兩個串的所有子串中能夠匹配上的最大長度是多少。 比如:"abcdkkk" 和 "baabcdadabc", 可以找到的最長的公共子串是"abcd",所以最大公共子串長度為4。 下面的程式是採用矩陣法進行求解的,這對串的規模不大的情
藍橋杯java第八屆B組:分巧克力
分巧克力 兒童節那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。 小明一共有N塊巧克力,其中第i塊是Hi x Wi的方格組成的長方形。 為了公平起見,小明需要從這 N 塊巧克力中切出K塊巧克力分給小朋友們。切出的巧克力需要滿足:
2017第八屆藍橋杯B組省賽第六題:最大公共子串
第六題 標題:最大公共子串 最大公共子串長度問題就是: 求兩個串的所有子串中能夠匹配上的最大長度是多少。 比如:"abcdkkk" 和 "baabcdadabc", 可以找到的最長的公共子串是"a
藍橋杯java第八屆第七題--日期問題
標題:日期問題 小明正在整理一批歷史文獻。這些歷史文獻中出現了很多日期。小明知道這些日期都在1960年1月1日至2059年12月31日。令小明頭疼的是,這些日期採用的格式非常不統一,有采用年/月/日的
藍橋杯java第三屆決賽第一題--星期日
【結果填空】 (滿分5分) 1949年的國慶節(10月1日)是星期六。 今年(2012)的國慶節是星期一。 那麼,從建國到現在,有幾次國
藍橋杯java第六屆決賽第一題--分機號
標題:分機號 X老闆脾氣古怪,他們公司的電話分機號都是3位數,老闆規定,所有號碼必須是降序排列,且不能有重複的數位。比如: 751,5
2017-年藍橋杯C-(A組)賽題-動態規劃-最大公共子串
6. 標題:最大公共子串最大公共子串長度問題就是:求兩個串的所有子串中能夠匹配上的最大長度是多少。比如:"abcdkkk" 和 "baabcdadabc",可以找到的最長的公共子串是"abcd",所以最大公共子串長度為4。下面的程式是採用矩陣法進行求解的,這對串的規模不大的情
2017年A組藍橋杯(最大公共子串問題)【動態規劃】
最大公共子串長度問題就是:求兩個串的所有子串中能夠匹配上的最大長度是多少。比如:"abcdkkk" 和"baabcdadabc",可以找到的最長的公共子串是"abcd",所以最大公共子串長度為4。下面的程式是採用矩陣法進行求解的,這對串的規模不大的情況還是比較有效的解法。請分
標題 最大公共子串 -藍橋杯
標題:最大公共子串最大公共子串長度問題就是:求兩個串的所有子串中能夠匹配上的最大長度是多少。比如:"abcdkkk" 和 "baabcdadabc",可以找到的最長的公共子串是"abcd",所以最大公共子串長度為4。下面的程式是採用矩陣法進行求解的,這對串的規模不大的情況還是
[OJ-java] 查詢兩個字串a,b中的最長公共子串
目的 記錄自己做過的有價值的程式碼 題目 如題,即查詢兩個字串stringA和stringB中的最長公共子串。成功返回最大公共子串,不成功返回null。 程式碼 public static String iQueryMaxCommString(Str
Java找出兩個字串中最大的子串
[java] view plain copy print?// 找一個字串的最大子串 publicstaticvoid main(String[] args) { String s1 = ”qwerabcdtyuiop”; String s2 = ”xc
java實現字串匹配問題之求兩個字串的最大公共子串
轉載請註明出處:http://blog.csdn.net/xiaojimanman/article/details/38924981 最近在專案工作中有一個關於文字對比的需求,經過這段時間的學習,總結了這篇部落格內容:求兩個字串的最大公共子串。 演算法思想:基於圖計算兩字串
查詢兩個字串a,b中的最長公共子串
#include<iostream> #include<string> using namespace std; string iQueryMaxCommString(string s1, string s2); int main(){ s
最大公共子串LCS(Java實現)
public class Lcs { public static String longest(String s1,String s2){ char ch1[]=s1.toCharArray(); char ch
2017第八屆藍橋杯省賽c/c++ B組
第一題 購物清單小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。 小明也有個怪癖,不到萬不得已,從不刷卡,直接現金搞定。 現在小明
2017第八屆藍橋杯(C/C++ )B組 --C檔案操作解法及程式碼
標題: 購物單(C檔案操作解法及程式碼) 小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠的。 小明也有個怪癖,不到萬不得已,從不刷卡,直接現金
17年第八屆藍橋杯省賽(C語言B組) 題解
最近 又從新做了一遍,主要是用程式碼實現.跑出答案...1:標題: 購物單 小明剛剛找到工作,老闆人很好,只是老闆夫人很愛購物。老闆忙的時候經常讓小明幫忙到商場代為購物。小明很厭煩,但又不好推辭。 這不,XX大促銷又來了!老闆夫人開出了長長的購物單,都是有打折優惠
第七屆藍橋杯省賽C/C++B組賽題及答案
part 實現 void 整數 三層 在一起 idt mage 算法; 第一題 【題目】 煤球數目 有一堆煤球,堆成三角棱錐形。具體:第一層放1個,第二層3個(排列成三角形),第三層6個(排列成三角形),第四層10個(排列成三角形),....如果一共有100層,共有多少個煤
【藍橋杯】第六屆國賽C語言B組 2.完美正方形(dfs)
spa else img IT bool break main LG fill 如果一些邊長互不相同的正方形,可以恰好拼出一個更大的正方形,則稱其為完美正方形。 歷史上,人們花了很久才找到了若幹完美正方形。比如:如下邊長的22個正方形2 3 4 6 7 8 12 13 14
【藍橋杯】第六屆國賽C語言B組 1.積分之迷(水題)
水題 urn class %d names 風鈴 需要 藍橋 std 小明開了個網上商店,賣風鈴。共有3個品牌:A,B,C。為了促銷,每件商品都會返固定的積分。 小明開業第一天收到了三筆訂單:第一筆:3個A + 7個B + 1個C,共返積分:315第二筆:4個A + 10個