最长公共子序列

给定两个字符串,求它们最长公共子序列的长度。

例如:

s = "abcd", t = "becd"

输出3("bcd")

利用动态规划求解

复制代码
 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cstring>
 4 #include <iostream>
 5 #include <algorithm>
 6 using namespace std;
 7 
 8 char s[102],t[102];
 9 int dp[102][102];
10 
11 int main(int argc, char const *argv[])
12 {
13     //freopen("input.txt","r",stdin);
14     while(scanf("%s %s",s,t) != EOF) {
15         int n = strlen(s);
16         int m = strlen(t);
17         memset(dp, 0, sizeof(dp));
18         for(int i = 0; i < n; i++) { 
19             for(int j = 0; j < m; j++) {
20                 if(s[i] == t[j]) {
21                     dp[i+1][j+1] = dp[i][j] + 1;
22                 }
23                 else {
24                     dp[i+1][j+1] = max(dp[i][j+1], dp[i+1][j]);
25                 }
26             }
27         }
28         printf("%d\n",dp[n][m]);
29     }
30     return 0;
31 }
复制代码

 

posted @   Jason杰  阅读(184)  评论(0编辑  收藏  举报
编辑推荐:
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
阅读排行:
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 《HelloGitHub》第 106 期
· 数据库服务器 SQL Server 版本升级公告
· 深入理解Mybatis分库分表执行原理
· 使用 Dify + LLM 构建精确任务处理应用
点击右上角即可分享
微信分享提示