最長公共字串 dp

2021-08-17 11:54:02 字數 530 閱讀 3857

藍橋杯2023年省賽一道補**題,最長公共字串

請分析該解法的思路,並補全劃線部分缺失的**。

#include #define n 256

int f(const char* s1, const char* s2)

} }return max;

}int main()

注意:只提交缺少的**,不要提交已有的**和符號。也不要提交說明性文字。

答案是:a[i-1][j-1]+1

x軸代表第乙個字串,y軸代表第二個子串,如果當前比較的字元相同,則就加上左上角的,也就是a[i-1][j-1]+1,表示到當前匹配的最長的長度。這就是dp矩陣,把大問題分解成若干小問題。

//因吹斯汀

最長公共字串

include include include include include customer.h using namespace std 最長公共字串 動態規劃 假設需要求得字串為str1,str2。函式f m,n 分別為 str1 m str2 n 結尾的公共字串長度。有以下遞推公式 遞推邊界...

最長公共字串

牛客網的題目鏈結 對於兩個字串,請設計乙個時間複雜度為o m n 的演算法 這裡的m和n為兩串的長度 求出兩串的最長公共子串的長度。這裡的最長公共子串的定義為兩個序列u1,u2,un和v1,v2,vn,其中ui 1 ui 1,vi 1 vi 1,同時ui vi。給定兩個字串a和b,同時給定兩串的長度...

最長公共字串和最長公共子串行

給出兩個字串,找到最長公共子串,並返回其長度。建立乙個矩陣來儲存兩個字串出現相同字元的地方,比如 abccd 和 abcefc 就有 abccd a10000 b02000 c00300 e00040 f00000 c00100 這樣就有每次遇到相等的都加上下他的斜上方的位置的值,然後使用乙個max...