最长公共子序列-dp
生活随笔
收集整理的這篇文章主要介紹了
最长公共子序列-dp
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個字符串的 子序列 是指這樣一個新的字符串:它是由原字符串在不改變字符的相對順序的情況下刪除某些字符(也可以不刪除任何字符)后組成的新字符串。
例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。兩個字符串的「公共子序列」是這兩個字符串所共同擁有的子序列。
解題思路:
代碼如下:
#include <iostream> #include <cstring> using namespace std; string a, b; const int N = 10010; int dp[N][N];int main() {while (cin >> a >> b) {memset(dp, 0, sizeof(dp));int len_a = a.length();int len_b = b.length();for (int i = 1; i <= len_a; i++)for (int j = 1; j <= len_b; j++) {if (a[i - 1] == b[j - 1])dp[i][j] = dp[i - 1][j - 1] + 1;elsedp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);}cout << dp[len_a][len_b] << endl;}return 0; }參考于<<手寫代碼必備手冊>> 戴方勤
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的最长公共子序列-dp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 储量备案要求(储量备案表)
- 下一篇: 域名后面怎么加后缀(域名后面怎么加后缀符