1. 程式人生 > >藍橋杯java第八屆B組:最大公共子串

藍橋杯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);  
    }
}


相關推薦

藍橋javaB公共

最大公共子串 最大公共子串長度問題就是: 求兩個串的所有子串中能夠匹配上的最大長度是多少。 比如:"abcdkkk" 和 "baabcdadabc", 可以找到的最長的公共子串是"abcd",所以最大公共子串長度為4。 下面的程式是採用矩陣法進行求解的,這對串的規模不大的情

藍橋javaB分巧克力

分巧克力      兒童節那天有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個